迭代器与集合
Ⅲ、迭代器
1.概述:java.util.Iterator接口,迭代器类,对单列集合进行遍历。无法直接使用,需要Iterator 接口的实现类对象,获取实现类的方式比较特殊。
Collection接口中有一个方法, 【迭代】 Iterator<E> iterator() 返回此 Collection 的元素上进行迭代的迭代器。 ==》返回的就是迭代器的实现类对象
2.三个常用的方法:
⑴ boolean hasNext() 如果仍有元素可以迭代,则返回 true
⑵ E next() 返回迭代的下一元素。 没有元素可以迭代时抛出:NoSuchElementException
⑶ void remove() 从迭代器指向的 Collection 中移除迭代器返回的最后一个元素(可选操作)。
注意:
①Iterator在遍历的过程中使用了锁定,只有它自己能调动,调用Iterator的remove
②Iterator只能单向移动
③Iterator.remove()是唯一安全的方法(在迭代的过程中修改集合),如果使用其他的方法在迭代的过程中修改集合将会产生未知的行为。
而且每调用一次next只能调用一次remove,如果违反了这个规则,将会抛出一个异常。
3.迭代器的使用步骤(重点)
㈠使用集合中的方法iterator()获取迭代器的实现类对象,使用Iterator接口进行接收(多态)。
㈡使用Iterator接口中方法hasNext()判断还有没有下一个可以迭代的元素
㈢使用Iterator接口中的方法next()取出迭代的下一元素。
4.注意:Iterator 接口也是有泛型的,迭代器的泛型跟着集合走,集合的泛型是什么,迭代器的泛型就是什么。
5.迭代器使用的一个例子:
1 Collection<Integer> coll=new TreeSet<>(); 2 coll.add(1); 3 coll.add(4); 4 coll.add(78); 5 Iterator<Integer> it=coll.iterator(); 6 while(it.hasNext()){ 7 System.sout.println(it.next()); 8 } 9 System.out.println(it.haxNext()); //false
本文来自博客园,作者:水啾2,转载请注明原文链接:https://www.cnblogs.com/shuijiu/p/15025417.html