1. List接口
List接口的特点:
- 它是一个元素存取有序的集合
- 它是一个带有索引的集合,通过索引就可以精确的操作集合中的元素。
- 集合中可以有重复的元素。
List接口子类有:
ArrayList
集合LinkedList
集合
2. List接口的方法
boolean add(E e);
:将指定的元素添加到集合的末尾,返回是否添加成功void add(int index, E element);
:将指定元素添加到指定的索引处
|
|
boolean remove(Object o);
:从集合中删除指定元素,返回值为是否删除成功E remove(int index);
:删除集合中指定位置的元素,返回值为被删除的元素
|
|
E set(int index, E element);
:将指定索引处的元素替换成指定的元素,返回值为替换前的元素
|
|
E get(int index);
:获取指定索引处的元素
|
|
3. ArrayList集合
- ArrayList集合底层采用的是数组结构
- 当
new ArrayList()
的时候,底层创建了一个长度为10的Object类型的数组
- 当
|
|
- 通过阅读源码可以知道,默认的数组长度是10,当
add
操作超出了默认的长度的时候,就会进行数组的扩容,数组的扩容其实就是将数组重新复制一份,保存到一个新的数组中,新数组的长度是旧数组长度乘1.5取整。
|
|
4. LinkedList集合的自身特点
- LinkedList集合底层采用链表结构,每次查询都要从链头或链尾找起,查询相比数组较慢,但是增删直接修改元素记录的地址值即可,不要大量移动元素,相比数组较快。
- LinkedList根据索引使用二分法查找需要的元素数据
5. LinkedList集合特有方法
E removeFirst()
:移除链表的开头,并返回移除的元素E removeLast()
:移除链表的结尾,并返回移除的元素
|
|
E getFirst()
: 获取链表的开头E getLast()
: 获取链表的结尾
|
|
void addFirst(E)
: 添加到链表的开头void addLast(E)
: 添加到链表的结尾
|
|
6. Vector类
Vector
类的特点Vector
集合数据存储的结构是数组结构,为JDK中最早提供的集合,它是线程同步的Vector
中提供了一个独特的取出方式,就是枚举Enumeration
,它其实就是早期的迭代器。- 此接口
Enumeration
的功能与Iterator
接口的功能是类似的。 Vector
集合已被ArrayList
替代。枚举Enumeration
已被迭代器Iterator
替代。