热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

图文结合、清晰易懂——Java中Collection集合的遍历(Iterator、foreach、forEach)

Iterator遍历结合定义:Iterator接口是Java集合框架中的一员,主要用于迭代访问(即遍历)Collection


Iterator遍历结合



定义:Iterator接口是Java集合框架中的一员,主要用于迭代访问(即遍历)Collection中的元素,
因此Iterator对象也被称为迭代器

package jiHe;import java.util.*;public class Collection_BianLiJiHe_Iterator {public static void main(String[] args) {//创建ArrayList集合List st = new ArrayList();st.add("ss");st.add("ddd");st.add("ppoo");//获取Iterator对象Iterator it = st.iterator();while(it.hasNext()) {System.out.println(it.next());/** Object obj = it.next(); * System.out.println(obj);*/}}
}

在这里插入图片描述

Iterator遍历集合——工作原理

在这里插入图片描述

Iterator遍历集合时,内部采用指针的方式来跟踪集合中的元素。
在调用next()方法之前,索引位于第一个元素之前,不指向任何元素。
第一次调用next()方法后,索引会向后移动一位,指向第一个元素并将该元素返回;
再次调用next()方法时,索引会指向第二个元素并将该元素返回;
以此类推,直到hasNext()方法返回false,表示到达了集合的末尾终止对元素的遍历。



foreach遍历集合



定义:foreach循环是一种更加简洁的for循环,也称增强for循环,用于遍历数组或集合中的元素。
在这里插入图片描述

注意:
foreach循环遍历集合和数组时,只能访问集合中的元素,不能对其中的元素进行修改。Iterator迭代器对集合中的元素进行迭代时,如果调用了集合对象的remove()方法删除元素,会出现ConcurrentModificationException异常。

package jiHe;import java.util.*;public class Foreach_Use {public static void main(String[] args) {ArrayList list = new ArrayList();list.add("huahua");list.add("niaoniao");list.add("huihui");//使用foreach循环遍历集合for(Object obj : list)System.out.println(obj);}
}

在这里插入图片描述、***

forEach遍历集合



定义: forEach(Consumer action)方法是JDK 8中新增的遍历集合元素的方法,根据Lambda表达式特性,该方法所需要的参数是一个函数式接口。
在这里插入图片描述
JDK 8中还针对Iterator迭代器对象提供了一个forEachRemaining(Consumer action)方法来进行遍历,该方法同样需要一个函数式接口。
在这里插入图片描述

package jiHe;import java.util.*;public class forEach_Use_ {public static void main(String[] args) {ArrayList list = new ArrayList();list.add("qq");list.add("EE");list.add("PP");System.out.println(list);//使用forEach方法遍历list.forEach(obj->System.out.println(obj));System.out.println("=============================================");//将集合转换为iterator迭代器对象Iterator it = list.iterator();it.forEachRemaining(ob->System.out.println(ob));}
}

在这里插入图片描述


推荐阅读
  • 深入解析Java枚举及其高级特性
    本文详细介绍了Java枚举的概念、语法、使用规则和应用场景,并探讨了其在实际编程中的高级应用。所有相关内容已收录于GitHub仓库[JavaLearningmanual](https://github.com/Ziphtracks/JavaLearningmanual),欢迎Star并持续关注。 ... [详细]
  • 本文详细探讨了HTML表单中GET和POST请求的区别,包括它们的工作原理、数据传输方式、安全性及适用场景。同时,通过实例展示了如何在Servlet中处理这两种请求。 ... [详细]
  • 深入解析动态代理模式:23种设计模式之三
    在设计模式中,动态代理模式是应用最为广泛的一种代理模式。它允许我们在运行时动态创建代理对象,并在调用方法时进行增强处理。本文将详细介绍动态代理的实现机制及其应用场景。 ... [详细]
  • 本文详细介绍了 iBatis.NET 中的 Iterate 元素,它用于遍历集合并重复生成每个项目的主体内容。通过该元素,可以实现类似于 foreach 的功能,尽管 iBatis.NET 并未直接提供 foreach 标签。 ... [详细]
  • JavaScript 基础语法指南
    本文详细介绍了 JavaScript 的基础语法,包括变量、数据类型、运算符、语句和函数等内容,旨在为初学者提供全面的入门指导。 ... [详细]
  • 深入解析 Android IPC 中的 Messenger 机制
    本文详细介绍了 Android 中基于消息传递的进程间通信(IPC)机制——Messenger。通过实例和源码分析,帮助开发者更好地理解和使用这一高效的通信工具。 ... [详细]
  • ListView简单使用
    先上效果:主要实现了Listview的绑定和点击事件。项目资源结构如下:先创建一个动物类,用来装载数据:Animal类如下:packagecom.example.simplelis ... [详细]
  • 本文将详细探讨 Java 中提供的不可变集合(如 `Collections.unmodifiableXXX`)和同步集合(如 `Collections.synchronizedXXX`)的实现原理及使用方法,帮助开发者更好地理解和应用这些工具。 ... [详细]
  • 本文详细探讨了Java中的ClassLoader类加载器的工作原理,包括其如何将class文件加载至JVM中,以及JVM启动时的动态加载策略。文章还介绍了JVM内置的三种类加载器及其工作方式,并解释了类加载器的继承关系和双亲委托机制。 ... [详细]
  • 2017-2018年度《网络编程与安全》第五次实验报告
    本报告详细记录了2017-2018学年《网络编程与安全》课程第五次实验的具体内容、实验过程、遇到的问题及解决方案。 ... [详细]
  • 本文介绍如何使用 Android 的 Canvas 和 View 组件创建一个简单的绘图板应用程序,支持触摸绘画和保存图片功能。 ... [详细]
  • 本文详细解析了Java中hashCode()和equals()方法的实现原理及其在哈希表结构中的应用,探讨了两者之间的关系及其实现时需要注意的问题。 ... [详细]
  • 我有一个SpringRestController,它处理API调用的版本1。继承在SpringRestControllerpackagerest.v1;RestCon ... [详细]
  • Logback使用小结
    1一定要使用slf4j的jar包,不要使用apachecommons的jar。否则滚动生成文件不生效,不滚动的时候却生效~~importorg.slf ... [详细]
  • 本文详细介绍了Java编程中的基本运算符,包括算术、赋值、关系和逻辑运算符,并深入探讨了三元运算符的使用。此外,还讲解了如何使用Scanner类进行用户输入处理以及if和switch语句等流程控制结构。 ... [详细]
author-avatar
容容1217_778
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有