11.6 Collection接口
Collection是Java一个集合接口,我们经常使用List、Set就实现了这个接口。
现在我们来看看Collection里面有什么方法。
返回值 | 方法名 | 说明 |
---|---|---|
boolean | add(Ee) | 添加一个元素到集合 |
boolean | addAll(Collectionc) | 添加整个集合c到集合 |
void | clear() | 清空集合 |
boolean | contain(Ee) | 判断元素e是否在集合中 |
boolean | containAll(Collectionc) | 判断集合c的所有元素是否在集合中 |
boolean | isEmpty() | 判断集合是否为空 |
boolean | remove(Ee) | 删除元素e |
boolean | removeAll(Collectionc) | 删除集合c里所有元素 |
boolean | retainAll(Collectionc) | 保留集合c的元素,其余删除 |
int | size() | 返回集合的长度 |
T[] | toArray(T[]a) | 生成一个T类型的数组,如果数组a容量不够那么会生成一个新的 |
Iterator | iterator() | 返回一个迭代器 |
上面我们可以看到在List里面很熟悉的size、add方法,原来这两个方法来自这里。官方全部说明在此:Collection
Collection还继承了Iterable接口,而Iterable接口有Iterator方法,返回一个Iterator迭代器
下面是更详细的Java集合类的类图:

1.黑色箭头表示引用了,例如Map引用了Collection,它本身不是Collection
2.虚线箭头表示继承,例如List、Set接口继承了Collection接口
3.实线箭头表示实现接口
Java给容器的遍历,添加了一种统一的方法:迭代器。Collection引用了Iterator,也就是所有Collection都能取得一个迭代器。下面是具体的代码:
List<String> list=new ArrayList();list.add("a");list.add("b");list.add("c");list.add("d");Iterator iterator=list.iterator();while(iterator.hasNext()){ System.out.println(iterator.next());}
第1到第5行代码是创建一个数组,然后添加四个元素
第6行是生成一个迭代器(list.iterator()),大部分的容器都可以生成迭代器,
大部分容器类都有iterator这个方法,例如
set.iterator();list.iterator();stack.iterator()
事实上所有Collection的实现类,都支持迭代器。
第7和第8行是进行遍历。迭代器有以下几个方法:
(1)使用next()获得序列中的下一个元素。
(2)使用hasNext()检查序列中是否还有元素。如果有元素返回true,否则返回false;
(3)使用remove()将迭代器新返回的元素删除。
迭代器只能单向,不能“回头”,也不能一次跳过两个或三个元素,如果有这种特殊的处理容器的需求,就不能使用迭代器。
可以使用之前的方法,使用循环逐个取出元素(基本上都是用get方法),也可以使用迭代器。