List集合的特点:
1、存取有序
2、可以重复
3、有索引
****添加的对象,所在的类要重写equals()方法
List集合的方法:
方法名 | 描述 |
---|---|
void add(int index,E element) | 在此集合中的指定位置插入指定的元素 |
E remove(int index) | 删除指定索引处的元素,返回被删除的元素 |
E set(int index,E element) | 修改指定索引处的元素,返回被修改的元素 |
E get(int index) | 返回指定索引处的元素 |
List集合的三个实现类:ArrayList、LinkedList、Vector
ArrayList:作为List接口的主要实现类;线程不安全的,效率高;底层使用Object[] elementData存储
jdk7中,底层创建了长度是10的Object[]数组 elementData
jdk8中,底层Object[]数组 elementData初始化为{},并没有创建长度为10的数组。第一次调用add()时,底层才创建了长度为10的数组。
**默认情况下,扩容为原来容量的1.5倍,同时将原有数组中的数据复制到新的数组中。
LinkedList:对于频繁的插入、删除操作,使用此类效率比ArrayList高;底层使用双向链表存储
内部声明:Node类型的first和last属性,默认值为null。
特有方法:
方法名 | 说明 |
---|---|
public void addFirst(E e) | 在该列表开头插入指定的元素 |
public void addLast(E e) | 将指定的元素追加到此列表的末尾 |
public E getFirst() | 返回此列表中的第一个元素 |
public E getLast() | 返回此列表中的最后一个元素 |
public E removeFirst() | 从此列表中删除并返回第一个元素 |
public E removeLast() | 从此列表中删除并返回最后一个元素 |
Vector:作为List接口的古老实现类;线程安全的,效率低;底层使用Object[] elementData存储
**jdk7和jdk8中通过Vector()构造器创建对象时,底层都创建了长度为10的数组。
** 在扩容方面,默认扩容为原来的数组长度的2倍。