- Collection接口是许多序列容器的共性的根接口,它实现了Iterable接口(可以使用foreach语法)。
- java.util.AbstractCollection类提供了Collection的默认实现,这是一个抽象类,除了size()和iterator()方法外都有默认实现。我们可以继承该类,并且实现size()和iterator()方法。
- 通过针对接口而非具体实现来编写代码,我们的代码就可以应用于更多的对象类型。比如说如果我写了一个方法接受Collection作为参数,那么任何实现了Collection的类都可以用这个方法(多态的一种表现)
- Collection和Iterator两者都可以将遍历方法与底层容器的特定实现解耦。
- 实现了Iterable接口的Collection可以使用foreach语法,这样代码更加清晰。
- 但是因为java不支持多继承语法,如果一个类已经继承了其他类,它就不能再继承AbstractCollection类了。
- 而如果实现要Collection接口就必须实现Collction所有方法。
另外,要实现Collection就必须要实现iterator(),所以此时(已经继承了其它类)选择实现Iterator接口较好。
@Override
public Iterator<Pet> iterator() {
return new Iterator<Pet>() {
private int index = 0;
@Override
public void remove() {
throw new UnsupportedOperationException();
}
@Override
public Pet next() {
return pets[index++];
}
@Override
public boolean hasNext() {
return index < pets.length;
}
};
}