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替代。