Iterator(迭代器)遍历Collection集合
2021-09-16 11:53
323 查看
1.Iterator概述
Iterator(迭代器)是一个接口,它的作用就是遍历容器的所有元素,也是 Java 集合框架的成员,但它与 Collection 和 Map 系列的集合不一样,Collection 和 Map 系列集合主要用于盛装其他对象,而 Iterator 则主要用于遍历(即迭代访问)Collection 集合中的元素。
实例用法:
Collection objs = new HashSet(); Iterator it = objs.iterator();
Iterator 接口隐藏了各种 Collection 实现类的底层细节,向应用程序提供了遍历 Collection 集合元素的统一编程接口。Iterator 接口里定义了如下 4 个方法。
- boolean hasNext():如果被迭代的集合元素还没有被遍历完,则返回 true。
- Object next():返回集合里的下一个元素。
- void remove():删除集合里上一次 next 方法返回的元素。
- void forEachRemaining(Consumer action):这是 Java 8 为 Iterator 新增的默认方法,该方法可使用 Lambda 表达式来遍历集合元素。
注:Iterator 必须依附于 Collection 对象,若有一个 Iterator 对象,则必然有一个与之关联的 Collection 对象。Iterator 提供了两个方法来迭代访问 Collection 集合里的元素(next与forEachRemaining),并可通过 remove() 方法来删除集合中上一次 next() 方法返回的集合元素。(Iterator只能通过remove方法移除最近获得的next集合对象,除此之外不可改变集合中的对象)
Iterator 迭代器采用的是**快速失败(fail-fast)**机制,一旦在迭代过程中检测到该集合已经被修改(通常是程序中的其他线程修改),程序立即引发 ConcurrentModificationException 异常,而不是显示修改后的结果,这样可以避免共享资源而引发的潜在问题。
2.普通遍历
Iterator its = set.iterator(); while(its.hasNext()){ Integer i = (Integer) its.next //Iterator未定义泛型,默认返回Object。需向下转型。 if(i.equals(33)){ its.remove(); }else{ System.out.println(i); } }
3.Lambda表达式遍历迭代器
Java 8 为 Iterator 引入了一个
forEachRemaining(Consumer action)默认方法,该方法所需的 Consumer 参数同样也是函数式接口。当程序调用 Iterator 的 forEachRemaining(Consumer action) 遍历集合元素时,程序会依次将集合元素传给 Consumer 的 accept(T t) 方法(该接口中唯一的抽象方法)。
java.util.function 中的 Function、Supplier、Consumer、Predicate 和其他函数式接口被广泛用在支持 Lambda 表达式的 API 中。“void accept(T t);”是 Consumer 的核心方法,用来对给定的参数 T 执行定义操作。
实例:
Set<Integer> set = new HashSet<>(); Iterator itt = set.iterator(); itt.forEachRemaining( num -> { Integer i = (Integer) num; if(i.compareTo(33) > 0) System.out.println("BigNumber " + num); else System.out.println("SmallNumber " + num); } );
保留问题
函数式接口的底层实现 接口中方法的调用
相关文章推荐
- Java——Collection,Iterator,迭代器用来遍历集合
- Java中集合(Collection)的遍历以及迭代器Iterator的详解!
- map集合的4种遍历方法和List集合的2种遍历和迭代器Iterator的使用
- Java>集合>>Iterator接口中迭代器的使用(对集合进行遍历)
- 使用迭代器Iterator和增强for循环如何遍历集合
- Java类集框架——Iterator和ListIterator 迭代器的使用(遍历集合)
- 黑马程序员_温习 集合一 (个人笔记)摘要:Collection集合框架----Iterator迭代器
- 集合(Collection)与迭代器(Iterator)(转载)
- JAVA之旅(十八)——基本数据类型的对象包装类,集合框架,数据结构,Collection,ArrayList,迭代器Iterator,List的使用
- List集合逆向遍历,迭代器Iterator&ListIterator的区别,希望能帮助到你.
- JAVA之旅(十八)——基本数据类型的对象包装类,集合框架,数据结构,Collection,ArrayList,迭代器Iterator,List的使用
- Map集合,List集合,Array数组,Iterator迭代,Collection集合,Set集合的多种遍历方式
- 集合遍历操作:Collection及Iterator接口
- java.util.Iterator接口:迭代器(对集合进行遍历)
- Java基础知识强化之集合框架笔记07:Collection集合的遍历之迭代器遍历
- 集合(Collection)与迭代器(Iterator)
- 迭代器Iterator基本用法--集合遍历
- Iterator iterator():迭代器,集合的专用遍历方式
- 小白学习Java第六天,Collection集合, Iterator迭代器,泛型
- JavaSE中Collection集合框架学习笔记(3)——遍历对象的Iterator和收集对象后的排序