Collection接口
在Java类库中,集合类的基本接口是Collection接口。
这个接口有两个基本方法:
public interface Collection<E> {
boolean add(E element);
Iterator<E> iterator();
}
add方法用于向集合中添加元素,添加成功返回true,添加失败则返回false。
iterator方法用于返回一个实现了Iterrator接口的对象。可以使用这个迭代器依次访问集合中的对象。
迭代器
Iterator接口包含了4个方法。
public interface Iterator<E> {
E next();
boolean hasNext();
void remove();
default void forEachRemaining(Consumer<? super E> action)
}
其中前两个方法不用赘述,例如:
for (String element : c) {
//do something with element
}
也可以不写循环,而是调用forEachRemaining方法构造一个lambda表达式,将对迭代器的每一个元素调用这个lambda表达式,直至再也没有元素为止。
iterator.forEachRemaing(element -> do something with element)
Java集合中的迭代器与其它类库中的迭代器在概念上有重要区别:
例如在C++类库中,迭代器是根据数组索引建模的;而在Java中,查找与为止变更紧密耦合。
查找一个元素的唯一方法是调用next(),而在执行查找操作同时,迭代器位置会向前移动。
remove()方法将会删除上次调用next()方法时返回的元素。
另外,如果要remove一个元素,则必须先调用next();
以下是不合法的:
it.remove();
it.remove();
而应该是:
it.next();
it.remove();
it.next();
it.remove();