1. List
1. List特点
- 元素有序,可重复。
- 我们主要学习三种:
ArrayList、Vector、LinkedList - 这三种都是List接口的实现类,使用上完全一样,只是实现原理不同,效率不同。
List集合判断元素是否相同,依据是元素的equals方法。
1.2 ArrayList
- 底层数组实现
- 查找快,增删慢
- 线程不安全
1.3 Vector
- 与
ArrayList基本一样 - 线程安全(线程同步),效率低
1.4 LinkedList
- 底层链表实现
- 增删块,查找慢
LinkedList:特有方法:
- addFirst();
- addLast();
- getFirst();
- getLast();
- 获取元素,但不删除元素。如果集合中没有元素,会出现
NoSuchElementException - removeFirst();
- removeLast();
- 获取元素,但是元素被删除。如果集合中没有元素,会出现
NoSuchElementException
在JDK1.6出现了替代方法。
- offerFirst();
- offerLast();
- peekFirst();
- peekLast();
- 获取元素,但不删除元素。如果集合中没有元素,会返回null。
- pollFirst();
- pollLast();
- 获取元素,但是元素被删除。如果集合中没有元素,会返回null。
1.5 存取元素
List集合元素存取方法一致- 使用
add()方法增加元素 - 由于
List集合有序,可以使用get()方法获取元素 - 元素的迭代(Iterator)
- 通过集合对象的iterator()方法获得迭代器Iterator
- 通过Iterator迭代器的hasNext()方法判断是否存在下一个元素
- 通过Iterator迭代器的next()方法获取下一个元素
- 元素的迭代(Enumeration)
- 迭代Vector集合中的元素可以使用Enumeration
- 通过
Enumeration的hasMoreElements()方法判断是否还有元素 - 通过
Enumeration的nextElement()方法返回下一个元素
1 | Collection |
List:
特有方法。凡是可以操作角标的方法都是该体系特有的方法。
增
- add(index,element);
- addAll(index,Collection);
删
- remove(index);
改
- set(index,element);
查 - get(index):
- subList(from,to);
- listIterator();
- int indexOf(obj):获取指定元素的位置。
- ListIterator listIterator();
List集合特有的迭代器。ListIterator是Iterator的子接口。
在迭代时,不可以通过集合对象的方法操作集合中的元素。
因为会发生ConcurrentModificationException异常。
所以,在迭代器时,只能用迭代器的放过操作元素,可是Iterator方法是有限的,
只能对元素进行判断,取出,删除的操作,
如果想要其他的操作如添加,修改等,就需要使用其子接口,ListIterator。
该接口只能通过List集合的listIterator方法获取。
1 | /*Collection 容器:存储对象的对象 |
1 | /*Collection 容器:存储对象的对象 |
1 | /*Collection 容器:存储对象的对象 |


