Java集合系列—Collection系列集合遍历方式(详解并附有代码案例)

本文主要是介绍Java集合系列—Collection系列集合遍历方式(详解并附有代码案例),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • Collection遍历方式
      • 18.2.1 迭代器遍历
      • 18.2.2 增强for遍历
      • 18.2.3 Lambda表达式遍历
      • 18.2.4 三种通用遍历方式区别

Collection遍历方式

  • Collection 是单列集合的顶层接口(祖宗接口),它的功能是全部单列集合都可以继承使用的,所以Collection 里面是一些共性的方法。
  • Collection 所有方法被List 和 Set系列集合共享

18.2.1 迭代器遍历

迭代器不依赖索引

迭代器在Java中的类Iterator,迭代器是集合专用的遍历方式。

Collection集合获取迭代器:

方法名称说明
Iterator iterator返回迭代器对象,默认指向当前集合的0索引

Iterator 中常用方法:

方法名称说明
boolean hasNext( )判断当前位置是否有元素,有返回ture,没有返回fasle
E next( )获取当前位置的元素,并将迭代器对象移向下一个位置

注意细节:

1.报错NoSuchElementException

2.迭代器遍历完毕,指针不会复位

3.循环中只能用一次next方法

4.迭代器遍历过程中,不能用集合的方法进行增加或者删除,如果要删除可以用迭代器里的remove方法进行删除,(目前无法添加)

public class Test {public static void main(String[] args) {/*迭代器遍历相关的三个方法:Iterator<E> iterator()  :获取一个迭代器对象boolean hasNext()       :判断当前指向的位置是否有元素E next()                :获取当前指向的元素并移动指针*/// 1.创建集合并添加元素Collection<String> coll = new ArrayList<>();coll.add("你");coll.add("好");coll.add("啊");// 2.获取迭代器对象// 迭代器就好比一个箭头,默认指向集合的0索引处Iterator<String> it = coll.iterator();// 3.循环不断的去获取集合中的每一个元素while (it.hasNext()){// 4.next()方法:获取元素并移动指针String str = it.next();System.out.println(str);//你好啊}// 当上面循环结束后,迭代器的指针已经指向最后没有元素的位置System.out.println(it.next());//报错:NoSuchElementException// 迭代器遍历完毕,指针不会复位//如果要继续第二次遍历,只能再此获取一个新的迭代器对象Iterator<String> it2= coll.iterator();while (it2.hasNext()){String str = it2.next();System.out.print(str);}}
}
public class Test02 {public static void main(String[] args) {//1.创建集合并添加元素Collection<String> coll = new ArrayList<>();coll.add("aaa");coll.add("bbb");coll.add("ccc");//2.获取迭代器对象//迭代器就好比是一个箭头,默认指向集合的0索引处Iterator<String> it = coll.iterator();//3.利用循环不断的去获取集合中的每一个元素while (it.hasNext()){//4.next方法的两件事情:获取元素,并移动指针String str = it.next();if ("bbb".equals(str)){//coll.remove("bbb");此行不可取,因为不能通过集合里的方法删除it.remove();}}System.out.println(coll);//[aaa, ccc]}
}

18.2.2 增强for遍历

  • 增强for的底层就是迭代器,简化迭代器的代码书写
  • JDK5之后,其内部原理就是一个Iterator迭代器
  • 所有单列集合和数组才能用增强for进行遍历

格式:

for(元素的数据类型 变量名:数组或者集合){}
如:for(String s:list){sout(s);}
public static void main(String[] args) {// 创建集合并添加数据Collection<String> coll = new ArrayList<>();coll.add("aaa");coll.add("bbb");coll.add("ccc");// s其实就是一个第三方变量,在循环的过程中依次表示集合中的每一个数据for (String s : coll) {System.out.println(s);//aaa  bbb  ccc}for (String s : coll) {s = "ddd";}System.out.println(coll);//[aaa, bbb, ccc]

修改增强for中的变量,不会改变集合中原本的数据

18.2.3 Lambda表达式遍历

JDK8开始新的技术Lambda表达式,提供了一种更简单直接的遍历集合方式。

方法名称说明
deafult void forEach(Consumer<? super T> action):结合lambda遍历集合
public class Test01 {public static void main(String[] args) {// 1.创建集合并添加数据Collection<String> coll = new ArrayList<>();coll.add("aaa");coll.add("bbb");coll.add("ccc");// 2.利用匿名内部类的形式//forEach底层原理:也会自己通过普通for循环遍历集合,依次得到每一个元素//把得到的每一个元素,传递给下面的accept方法// s 表示集合中的每一个数据// coll.forEach(new Consumer<String>() {//     @Override//     public void accept(String s) {//         System.out.println(s);//     }// });// 利用匿名内部类改成 lambda表达式:coll.forEach((String s) ->{System.out.println(s);//aaa  bbb  ccc});// 简化lambda表达式coll.forEach(s ->System.out.println(s));//aaa  bbb ccc}
}

18.2.4 三种通用遍历方式区别

迭代器:在遍历过程中需要删除元素,使用迭代器

增强for、Lambda:仅想遍历输出,就选这俩

这篇关于Java集合系列—Collection系列集合遍历方式(详解并附有代码案例)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1124443

相关文章

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck

SpringBoot使用Apache Tika检测敏感信息

《SpringBoot使用ApacheTika检测敏感信息》ApacheTika是一个功能强大的内容分析工具,它能够从多种文件格式中提取文本、元数据以及其他结构化信息,下面我们来看看如何使用Ap... 目录Tika 主要特性1. 多格式支持2. 自动文件类型检测3. 文本和元数据提取4. 支持 OCR(光学

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma

Java 字符数组转字符串的常用方法

《Java字符数组转字符串的常用方法》文章总结了在Java中将字符数组转换为字符串的几种常用方法,包括使用String构造函数、String.valueOf()方法、StringBuilder以及A... 目录1. 使用String构造函数1.1 基本转换方法1.2 注意事项2. 使用String.valu

python实现pdf转word和excel的示例代码

《python实现pdf转word和excel的示例代码》本文主要介绍了python实现pdf转word和excel的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一、引言二、python编程1,PDF转Word2,PDF转Excel三、前端页面效果展示总结一

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W

mac中资源库在哪? macOS资源库文件夹详解

《mac中资源库在哪?macOS资源库文件夹详解》经常使用Mac电脑的用户会发现,找不到Mac电脑的资源库,我们怎么打开资源库并使用呢?下面我们就来看看macOS资源库文件夹详解... 在 MACOS 系统中,「资源库」文件夹是用来存放操作系统和 App 设置的核心位置。虽然平时我们很少直接跟它打交道,但了

Mybatis官方生成器的使用方式

《Mybatis官方生成器的使用方式》本文详细介绍了MyBatisGenerator(MBG)的使用方法,通过实际代码示例展示了如何配置Maven插件来自动化生成MyBatis项目所需的实体类、Map... 目录1. MyBATis Generator 简介2. MyBatis Generator 的功能3