Java迭代器接口Iterator
Java中的Iterator是这样定义的:
public interface Iterator<E>,表明这是一个接口,<E>表示这是一个泛型接口
由于这是一个接口,那么就没有构造方法了,也就不能使用new+构造方法创建Iterator对象了
我们使用下面的方法创建一个Iterator对象
比如我们要为HashSet<String>对象hashSet
创建一个迭代器对象
Iterator<String> it = hashSet.iterator();
Iterator接口中有四个方法,最后一个forEachRemaining
方法没看懂,看名字和循环有关。
剩下的三个方法分别是:
boolean hasNext();
<E> next();
void remove();
其中,remove()方法和forEachRemaining()方法都是使用default
定义的,表示可以拥有方法体,可以被实现类继承
hasNext()方法是返回还有没有值的,顺便这里多说一句,HashMap中的元素是没有顺序的(不会记录插入的顺序)
next()方法返回下一个元素
remove()方法移除上一个next()方法返回的元素
看代码:
HashSet<String> hashSet = new HashSet<String>();
hashSet.add("hello");
hashSet.add("nihao");
hashSet.add("nice");
Iterator<String> it1 = hashSet.iterator();
while(it1.hasNext()){
System.out.println("1"+it1.next());
it1.remove();
}
我是用its.remove()方法将hashSet
中的元素都移除了,注意这里是移除了hashSet中的元素,如果再新建一个迭代器对象it2,可以发现hashSet中没有元素了
Iterator<String> it2 = hashSet.iterator();
while(it1.hasNext()){
System.out.println("2"+it1.next());
}