Iterator的API,方法:
关于Iterator主要有三个方法:hasNext()、next()、remove()
hasNext:没有指针下移操作,只是判断是否存在下一个元素
next:指针下移,返回该指针所指向的元素
remove:删除当前指针所指向的元素,一般和next方法一起用,这时候的作用就是删除next方法返回的元素
集合中Collection类都继承了Iterable借口,所以都可以用Iterator迭代器
Iterator是一个接口,它是集合的迭代器。集合可以通过Iterator去遍历集合中的元素。Iterator提供的API接口如下:
♦ boolean hasNext():判断集合里是否存在下一个元素。如果有,hasNext()方法返回 true。
♦ Object next():返回集合里下一个元素。
♦ void remove():删除集合里上一次next方法返回的元素。
ListIterator接口继承Iterator接口,提供了专门操作List的方法。ListIterator接口在Iterator接口的基础上增加了以下几个方法:
♦ boolean hasPrevious():判断集合里是否存在上一个元素。如果有,该方法返回 true。
♦ Object previous():返回集合里上一个元素。
♦ void add(Object o):在指定位置插入一个元素。
相比较而言,ListIterator功能更强大,ListIterator增加了向前迭代的功能(Iterator只能向后迭代),ListIterator还可以通过add()方法向List集合中添加元素(Iterator只能删除元素)。
错误典型例子:
Collection co = new ArrayList(); co.add(33); co.add(45); co.add(25); while(coll1.iterator().hasNext()){ System.out.println(coll1.iterator().next()); } }
结果如下:
33
33
33
33
.......
原因:集合对象每次调用iterator()方法都得到一个全新的迭代器对象
如此,就会重复进行第一步,死循环了
正确如下:
Collection co = new ArrayList();
co.add(33);
co.add(45);
co.add(25);
Iterator iterator = co.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
浙公网安备 33010602011771号