迭代器与集合

Ⅲ、迭代器
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

 

posted @ 2021-07-17 22:58  水啾2  阅读(38)  评论(0编辑  收藏  举报