星光下的学者

导航

 

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());
}

 

posted on 2021-04-04 14:23  我觉得我还能挣扎一下  阅读(230)  评论(0)    收藏  举报