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()判断集合是否为空
booleanremove(Ee)
删除元素e
boolean
removeAll(Collectionc)
删除集合c里所有元素
booleanretainAll(Collectionc)
保留集合c的元素,其余删除
intsize()返回集合的长度
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<Stringlist=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方法),也可以使用迭代器。