🍳顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。
🪄代码示例:
🧁(1)添加元素 ,默认添加到数组的最后位置
🪄代码示例:
🧁(2)在顺序表的第pos(0 <= pos < usedsize)个位置插入新元素data。若pos的输入的位置不合法,则抛出PosException异常,表示插入失败;否则,将顺序表的第pos个元素及其后的所有元素右移一个位置,腾出一个空位置插入新元素data,顺序表长度增加1,插入成功。
🍋如图:
🪄代码示例:
🧁(1)查找当前元素 是否存在,存在返回true,不存在返回false
🧁(2)查找当前元素 的下标,找到返回下标,没找到返回-1
🧁(3)获取pos位置的值,1、检查pos位置是否合法,不合法就抛出PosException异常,2、检查顺序表是否为空,为空就抛出EmptyException异常
🧁1、检查顺序表是否为空,为空则抛出EmptyException异常,2、查找该元素所在的下标,3、如图逐一从后面一个一个把前面的元素覆盖掉4、usedseize-1
🧁清空顺序表 防止内存泄漏,如果顺序表类存储的不是引用类型元素,直接把usedsize置空,如果是引用类型元素,需要把每个元素都置空。
🪄代码示例:
方法 | 构造 |
---|---|
ArrayList() | 无参构造 |
ArrayList(Collection<? extends E> c) | 利用其他 Collection 构建 ArrayList |
ArrayList(int initialCapacity) | 指定顺序表初始容量 |
🪄代码示例:
🍨ArrayList虽然提供的方法比较多,但是常用方法如下所示,需要用到其他方法时,可自行查看ArrayList的帮助文档
方法 | 解释 |
---|---|
boolean add(E e) | 尾插 e |
void add(int index, E element) | 将 e 插入到 index 位置 |
boolean addAll(Collection<? extends E> c) | 尾插 c 中的元素 |
E remove(int index) | 删除 index 位置元素 |
boolean remove(Object o) | 删除遇到的第一个 o |
E get(int index) | 获取下标 index 位置元素 |
E set(int index, E element) | 将下标 index 位置元素设置为 element |
void clear() | 清空 |
boolean contains(Object o) | 判断 o 是否在线性表中 |
int indexOf(Object o) | 返回第一个 o 所在下标 |
int lastIndexOf(Object o) | 返回最后一个 o 的下标 |
List subList(int fromIndex, int toIndex) | 截取部分 list |
🪄代码示例:
🍝ArrayList 可以使用三方方式遍历:for循环+下标、foreach、使用迭代器
🍋(1)for循环+下标
🍋(2)foreach
🍋(3)迭代器
🍋数据结构: 1、顺序表由一系列元素组成,这些元素按照特定的顺序排列。 2、每个元素都有一个唯一的索引,从 0 开始递增。 3、顺序表可以是静态的,意味着它的大小是固定的;也可以是动态的,可以根据需要动态调整大小。
🍋优点: 1、实现简单:顺序表的实现非常简单,因为元素存储在连续的内存空间中,可以通过索引直接访问。 2、高效的随机访问:由于顺序表的有序存储,可以在 O(1) 的时间复杂度内进行随机访问,即根据索引快速定位元素。 3、支持顺序遍历:可以按照顺序遍历整个顺序表,逐个访问元素。
🍋缺点: 1、固定大小:静态顺序表的大小是固定的,在创建时就需要指定,如果需要存储更多元素,可能会导致内存不足。 2、插入和删除操作复杂:在顺序表中进行插入和删除操作可能需要移动其他元素,以保持顺序,这会导致时间复杂度较高。 3、不适合大规模数据:顺序表对于大规模数据的处理效率较低,因为需要将所有元素存储在连续的内存空间中。
🎉OK!今天的分享就到这里了,后面还会分享更多算法,敬请关注喔!!!✌️