在Java类库中,集合类的基本接口是Collection接口。
迭代器:
在Collection接口中有iterator()方法用于返回一个实现了iterator接口的对象。可以使用这个迭代器对象依次访问集合中的所有元素。
可以这样遍历集合中的元素。
Collection c = ...;
foreach(String elememt : c){
...
}
应该将Java迭代器认为是位于两个元素之间,当调用next时。迭代器就越过下一个元素,并返回刚刚越过的那个元素的引用。
集合类的用户可以使用泛型接口中一组更加丰富的方法,而实际的数据结构实现者并没有实现所有例行方法的负担。
java.util.Collection
1) Iterator
2) int size(); 返回存储在当前集合的元素个数。
3) boolean isEmpty(); 如果集合中没有元素则返回true。
4) boolean contains(Object obj); 如果集合中包含了一个与obj相等的对象返回true。
5) boolean containsAll(Collection> other); 如果集合包含other集合中的所有元素返回true。
6) boolean add(Object element); 讲一个元素添加到集合中。如果由于这个调用改变了集合返回true。
7) boolean addAll(Collection extends E> other); 将other集合中的所有元素添加到这个集合。如果由于这个调用改变了集合返回true。
8) boolean remove(Object obj); 从这个集合中删除等于obj的对象。如果有匹配的对象被删除返回true。
9) boolean removeAll(Collection> other); 从这个集合中删除other集合中存在的所有元素。如果由于这个调用改变了集合返回true。
10) void clear(); 从这个集合中删除所有元素。
11) boolean retainAll(Collection> other); 从这个集合中删除所有与other集合中元素不同的元素。如果这个调用改变了集合返回true。
12) Object[] toArray(); 返回这个集合的对象数组。
java.util.Iterator
1) boolean hasNext(); 如果存放访问的元素返回true。
2) E next(); 返回将要访问的下一个对象。如果已经到达了集合的尾部将抛出一个NoSuchElementException异常。
3) void remove(); 删除上次访问的对象。如果上次访问之后集合已发生了变化(比如添加、删除了元素)这个方法将会抛出一个IllegalStateException异常。
对集合的增、删、改都会使当前的迭代器失效。
以下展示了一些Java类库中的集合,这些类都实现了Collection接口。往下会一一详细介绍
集合类型 | 描述 |
---|---|
ArrayList | 可以动态增长和缩减的索引序列 |
LinkedList | 可以在任何位置进行进行高效地插入和删除操作的有序序列 |
ArrayDeque | 用循环数组实现的双端队列 |
HashSet | 没有重复元素的无序集合 |
TreeSet | 有序集 |
EnumSet | 包含枚举类型值的集 |
LinkedHashSet | 可以记住元素插入次序的集 |
PriorityQueue | 允许高效删除最小元素的集合 |