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倍。
本文详细介绍了List接口的特性,包括有序、可重复和有索引,并强调了添加元素时重写equals()的重要性。ArrayList作为主要实现类,线程不安全但效率高,初始容量在JDK7和8中有变化,扩容策略为1.5倍。LinkedList适用于频繁的插入和删除,采用双向链表实现,提供特有的头尾操作方法。而Vector是线程安全的,但效率较低,扩容策略为2倍。三者在存储和操作上有各自的优劣,适合不同场景的应用。
1495

被折叠的 条评论
为什么被折叠?



