【遍历方法】浅析Java中字符串、数组、集合的遍历

目录

前言

字符串篇

1.1 使用 for 循环和 charAt 方法

1.2 使用增强 for 循环(forEach 循环)

1.3 使用 Java 8 的 Stream API

最终效果

数组篇

2.1 使用普通 for 循环

2.2 使用增强型 for 循环( forEach 循环)

2.3 使用 Arrays.asList 和 forEach 循环(仅适用于对象数组)

2.4 使用 Java 8 的Stream API

最终效果

集合篇

3.1 List、Set集合

3.1.1 使用普通 for 循环(Set 集合除外)

3.1.2 使用增强型 for 循环 (forEach 循环)

3.1.3 使用迭代器(Iterator)

3.1.4 使用 Java 8 的 Stream API

3.1.5 使用Lambda表达式和方法引用

最终效果

3.2 Map集合

3.2.1 遍历 “键” 集合

效果

3.2.2 遍历 “键值对”(Entry)

3.2.3 使用迭代器(Iterator)

3.2.4 使用 Java 8 的 Steam API

效果

注:手机端浏览本文章可能会出现 “目录”无法有效展示的情况,请谅解,点击侧栏目录进行跳转


前言

        在 Java 的学习过程和项目开发过程中,我们需要对 “字符串”、“数组”、“集合类(List、Set、Map)”等对象中的元素 “访问”、“筛选”、“处理” 等操作,不同的遍历方式使用于不同的场景和需求;接下来,我对 “字符串”、“数组”、“集合(List、Set、Map)”的常见遍历方法进行了归纳;

↓↓↓ 各位看官,请阅读下问 ↓ ↓↓


字符串篇

1.1 使用 for 循环和 charAt 方法

String str = "Hello,World!";for(int i = 0; i < str.length();i++){char c =str.charAt(i);System.out.print(c + "\t");
}

1.2 使用增强 for 循环(forEach 循环)

String str ="Hello,World!";for(char c : str.toCharArray()){System.out.print(c + "\t");
}

1.3 使用 Java 8 的 Stream API

将字符串转换为字符流,然后使用 forEach 方法进行处理

String str = "Hello, World!";str.chars().mapToObj(c -> (char) c).forEach(ch -> {System.out.print(ch + "\t");
});

最终效果

H	e	l	l	o	,	 	W	o	r	l	d	!

数组篇

2.1 使用普通 for 循环

int[] arr = {1, 2, 3, 4, 5};for (int i = 0; i < arr.length; i++) {int element = arr[i];System.out.print(element +"\t");
}

2.2 使用增强型 for 循环( forEach 循环)

int[] arr = {1, 2, 3, 4, 5};for (int element : arr) {System.out.print(element + "\t");
}

2.3 使用 Arrays.asList 和 forEach 循环(仅适用于对象数组)

Integer [] arr = {1, 2, 3, 4, 5};for (Integer element : Arrays.asList(arr)) {System.out.print(element + "\t");
}

2.4 使用 Java 8 的Stream API

int[] arr = {1, 2, 3, 4, 5};Arrays.stream(arr).forEach(element -> {System.out.print(element + "\t");
});

最终效果

1	2	3	4	5	

集合篇

3.1 List、Set集合

3.1.1 使用普通 for 循环(Set 集合除外)

List<String> list = new ArrayList<>();//向集合中添加元素
String[] arr ={"1","3","5","7","9"};
list.addAll(Arrays.asList(arr));//开始遍历
for (int i = 0; i < list.size(); i++) {String element = list.get(i);System.out.print(element + "\t");
}

3.1.2 使用增强型 for 循环 (forEach 循环)

List<String> list = new ArrayList<>();//向集合中添加元素
String[] arr ={"1","3","5","7","9"};
list.addAll(Arrays.asList(arr));//开始遍历
for (String element : list) {System.out.print(element + "\t");
}

3.1.3 使用迭代器(Iterator)

List<String> list = new ArrayList<>();//向集合中添加元素
String[] arr ={"1","3","5","7","9"};
list.addAll(Arrays.asList(arr));//开始遍历
Iterator<String> iterator = list.iterator();
while(iterator.hasNext()) {String element = iterator.next();System.out.print(element + "\t");
}

3.1.4 使用 Java 8 的 Stream API

List<String> list = new ArrayList<>();//向集合中添加元素
String[] arr ={"1","3","5","7","9"};
list.addAll(Arrays.asList(arr));//开始遍历
list.stream().forEach(element -> {System.out.print(element + "\t");
});

3.1.5 使用Lambda表达式和方法引用

List<String> list = new ArrayList<>();//向集合中添加元素
String[] arr ={"1","3","5","7","9"};list.addAll(Arrays.asList(arr));//开始遍历
list.forEach(System.out::print); 

最终效果

1	3	5	7	9	

3.2 Map集合

3.2.1 遍历 “键” 集合

Map<String, Integer> map = new HashMap<>();// 添加元素到map中
map.put("key1", 1);
map.put("key2", 2);
map.put("key3", 3);
map.put("key4", 4);
map.put("key5", 5);for (String key : map.keySet()) {Integer value = map.get(key);System.out.print(value +"\t");
}

效果

1	2	5	3	4	

3.2.2 遍历 “键值对”(Entry)

Map<String, Integer> map = new HashMap<>();// 添加元素到map中
map.put("key1", 1);
map.put("key2", 2);
map.put("key3", 3);
map.put("key4", 4);
map.put("key5", 5);for (Map.Entry<String, Integer> entry : map.entrySet()) {String key = entry.getKey();Integer value = entry.getValue();System.out.print(key +":" + value +"\t");
}

3.2.3 使用迭代器(Iterator)

Map<String, Integer> map = new HashMap<>();// 添加元素到map中
map.put("key1", 1);
map.put("key2", 2);
map.put("key3", 3);
map.put("key4", 4);
map.put("key5", 5);Iterator<String> keyIterator = map.keySet().iterator();
while (keyIterator.hasNext()) {String key = keyIterator.next();Integer value = map.get(key);System.out.print(key +":" + value +"\t");}

3.2.4 使用 Java 8 的 Steam API

Map<String, Integer> map = new HashMap<>();// 添加元素到map中
map.put("key1", 1);
map.put("key2", 2);
map.put("key3", 3);
map.put("key4", 4);
map.put("key5", 5);map.keySet().stream().forEach(key -> {Integer value = map.get(key);System.out.print(key +":" + value +"\t");
});

效果

key1:1	key2:2	key5:5	key3:3	key4:4	

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/277901.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#调用Halcon出现尝试读取或写入受保护的内存,这通常指示其他内存已损坏。System.AccessViolationException

一、现象 在C#中调用Halcon&#xff0c;出现异常提示&#xff1a;尝试读取或写入受保护的内存,这通常指示其他内存已损坏。System.AccessViolationException 二、原因 多个线程同时访问Halcon中的某个公共变量&#xff0c;导致程序报错 三、测试 3.1 Halcon代码 其中tsp_width…

用户视角的比特币和以太坊外围技术整理

1. 引言 要点&#xff1a; 比特币L2基本强调交易内容的隐蔽性&#xff0c;P2P交易&#xff08;尤其是支付&#xff09;成为主流&#xff0c;给用户带来一定负担&#xff08;闪电网络&#xff09;在以太坊 L2 中&#xff0c;一定程度上减少了交易的隐蔽性&#xff0c;主流是实…

C语言 数据在内存中的存储

目录 前言 一、整数在内存中的存储 二、大小端字节序和字节序判断 2.1.练习一 2.2 练习二 2.3 练习三 2.4 练习四 2.5 练习五 2.6 练习六 三、浮点数在内存中的存储 3.1 浮点数存的过程 3.2 浮点数取的过程 总结 前言 数据在内存中根据数据类型有不同的存储方式&#xff0c;今…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的火焰与烟雾检测系统详解(深度学习模型+UI界面升级版+训练数据集)

摘要&#xff1a;本研究详细介绍了一种集成了最新YOLOv8算法的火焰与烟雾检测系统&#xff0c;并与YOLOv7、YOLOv6、YOLOv5等早期算法进行性能评估对比。该系统能够在包括图像、视频文件、实时视频流及批量文件中准确识别火焰与烟雾。文章深入探讨了YOLOv8算法的原理&#xff0…

Parade Series - Web Streamer Low Latency

Parade Series - FFMPEG (Stable X64) 延时测试秒表计时器 ini/config.ini [system] homeserver storestore\nvr.db versionV20240312001 verbosefalse [monitor] listrtsp00,rtsp01,rtsp02 timeout30000 [rtsp00] typelocal deviceSurface Camera Front schemartsp ip127…

软件杯 深度学习 python opencv 动物识别与检测

文章目录 0 前言1 深度学习实现动物识别与检测2 卷积神经网络2.1卷积层2.2 池化层2.3 激活函数2.4 全连接层2.5 使用tensorflow中keras模块实现卷积神经网络 3 YOLOV53.1 网络架构图3.2 输入端3.3 基准网络3.4 Neck网络3.5 Head输出层 4 数据集准备4.1 数据标注简介4.2 数据保存…

前端框架vue的样式操作,以及vue提供的属性功能应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

基于Springboot+Vue+Sercurity实现的大学生健康管理平台

1.项目介绍 大学生健康档案管理系统&#xff0c;通过电子健康档案管理系统这个平台&#xff0c;可以实现人员健康情况的信息化、网络化、系统化、规范化管理&#xff0c;从繁杂的数据查询和统计中解脱出来&#xff0c;更好的掌握人员健康状况。系统的主要功能包括&#xff1a;…

2024年5家香港服务器推荐,性价比top5

​​香港服务器是中小企业建站、外贸建站、个人博客建站等领域非常受欢迎的服务器&#xff0c;2024年有哪些云厂商的香港服务器是比较有性价比的&#xff1f;这里根据小编在IT领域多年服务器使用经验&#xff0c;给大家罗列5家心目中最具性价比的香港服务器厂商。 这五家香港服…

StarRocks面试题及答案整理,最新面试题

StarRocks 的 MV&#xff08;物化视图&#xff09;机制是如何工作的&#xff1f; StarRocks 的物化视图&#xff08;MV&#xff09;机制通过预先计算和存储数据的聚合结果或者转换结果来提高查询性能。其工作原理如下&#xff1a; 1、数据预处理&#xff1a; 在创建物化视图时…

【静夜思】为什么我们会如此喜欢夜晚呢

作为一名大学生&#xff0c;熬夜对我来说已是常态。每天都是近乎一点钟才有困意&#xff0c;觉得应该上床睡觉了&#xff0c;即使明天早八&#xff0c;即使明天有很多课。我也观察过身边的朋友&#xff0c;他们中大多数也和我一样&#xff0c;基本都是在12点过后才入睡。当今的…

HTML静态网页成品作业(HTML+CSS)——家乡广州介绍设计制作(5个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有5个页面。 二、作品演示 三、代…

爱普生晶振发布RTC模块晶振(压电侠)

爱普生晶振一直以”省&#xff0c;小&#xff0c;精”技术作为资深核心&#xff0c;并且已经建立了一个原始的垂直整合制造模型&#xff0c;可以自己创建独特的核心技术和设备&#xff0c;使用这些作为基地的规划和设计提供独特价值的产品. 世界领先的石英晶体技术精工爱普生公…

Jmeter+Ant 接口自动化环境配置指南

一 、Jmeter安装与配置 https://blog.csdn.net/tester_sc/article/details/80746405 注&#xff1a;Jmeter5.0的环境变量配置与4.0或历往老版本有部分小差异&#xff0c;笔者用的Jmeter 5.0 二 、Ant的安装与配置 # Ant下载地址(下载到指定目录后&#xff0c;进行解压到当前…

在 Rust 中使用 Serde 处理json

在 Rust 中使用 Serde 处理json 在本文中&#xff0c;我们将讨论 Serde、如何在 Rust 应用程序中使用它以及一些更高级的提示和技巧。 什么是serde&#xff1f; Rust中的serde crate用于高效地序列化和反序列化多种格式的数据。它通过提供两个可以使用的traits来实现这一点&a…

【CesiumJS-5】绘制动态路线实现飞行航线、汽车轨迹、路径漫游等

实现效果 前言 Cesium中&#xff0c;动态路线绘制的核心是借助CZML格式&#xff0c;CZML是一种用来描述动态场景的JSON数组,可以用来描述点、线、多边形、体、模型及其他图元,同时定义它们是怎样随时间变化的&#xff1b; CZML主要做三件事&#xff1a; 1.添加模型信息 2.添加…

zookeeper快速入门一:zookeeper安装与启动

本文是zookeeper系列之快速入门中的第一篇&#xff0c;欢迎大家观看与指出不足。 写在前面&#xff1a; 不影响教程&#xff0c;笔者安装zookeeper用的是WSL(windows下的linux子系统&#xff09;&#xff0c;当然你想直接在windows上用zookeeper也是可以的。 如果你也想用ws…

Linux学习(4)——使用编辑器

1.gedit编辑器 简单易懂&#xff0c;依赖图形界面。可以使用ctrlc ctrlv等快捷键&#xff0c;ctrls进行保存&#xff0c;与windows系统中相类似。 2.vi/vim编辑器 vi/vim可以直接通过控制台的终端完成文本的编辑&#xff0c;不依赖图形界面&#xff0c;使用范围更广。它的编辑…

数字IC实践项目(9)—SNN加速器的设计和实现(tiny_ODIN)

数字IC实践项目&#xff08;9&#xff09;—基于Verilog的SNN加速器 写在前面的话项目整体框图完整电路框图 项目简介和学习目的软件环境要求 Wave&CoverageTiming&#xff0c;Area & Power总结 写在前面的话 项目介绍&#xff1a; SNN硬件加速器是一种专为脉冲神经网…

三、传输层拥塞控制、差错控制

3.1 概述和传输层服务 传输服务和协议&#xff1a; 为运行在不同主机上的应用进程提供逻辑通信&#xff1b; 传输协议运行在端系统-发送方:将应用层的报文分成报文段&#xff0c;然后传递给网络层&#xff1b;接收方&#xff1a;将报文段重组成报文&#xff0c;然后传递给应用…