【遍历方法】浅析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.mzph.cn/news/751636.shtml

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

相关文章

解决:springboot项目访问hdfs文件提示guava版本不兼容

1、问题描述 版本说明&#xff1a;我用的hadoop版本&#xff1a;3.1.3 项目可以正常启动&#xff0c;但是调用访问hdfs的服务时候报错,报错消息如下&#xff1a;com.google.common.base.preconditions.checkArgument(ZL java/lang/String;Ljava/lang/Object:)V 原因分析&#x…

Flutter开发进阶之使用工具效率开发

Flutter开发进阶之使用工具效率开发 软件开发团队使用Flutter开发的原因通常是因为Flutter开发性能高、效率高、兼容性好、可拓展性高&#xff0c;作为软件PM来说主要考虑的是范围管理、进度管理、成本管理、资源管理、质量管理、风险管理和沟通管理等&#xff0c;可以看到Flu…

企业内部培训考试系统培训计划功能说明

培训计划是预设好的一套课程系列&#xff0c;包含课程和考试&#xff0c;分多个阶段&#xff0c;每完成一个阶段就会在学习地图上留下标记&#xff0c;让用户看到自己的努力成果&#xff0c;增强成就感&#xff0c;从而坚持完成课程。 企业内部培训考试系统中如何设置培训计划…

基于springboot的购物商城管理系统

1.项目简介 1.1 用户简介 用户主要分为管理员和用户端&#xff1a; 管理员&#xff1a; 管理员可以对后台数据进行管理、拥有最高权限、具体权限有登录后进行首页轮播图的配置管理、商品的配置、新品家具商城的配置管理、、家具商城分类管理配置、家具商城详情商品管理、用户…

Git 下载时需要使用代理?

食用方法 在命令行中&#xff0c;你可以使用以下命令来设置Git的HTTP和HTTPS代理&#xff1a; git config --global http.proxy http://127.0.0.1:6890 git config --global https.proxy https://127.0.0.1:6890 注意是根据自己的实际情况修改IP和端口号 注意如果不想全局配置…

react-面试题

一、组件基础 1. React 事件机制 <div onClick{this.handleClick.bind(this)}>点我</div> React并不是将click事件绑定到了div的真实DOM上&#xff0c;而是在document处监听了所有的事件&#xff0c;当事件发生并且冒泡到document处的时候&#xff0c;React将事…

网络安全JavaSE第二天(持续更新)

3. 基本数据与运算 3.6 运算符 3.6.1 算术运算符 在 Java 中&#xff0c;算术运算符包含&#xff1a;、-、*、/、% public class ArithmeticOperator { public static void main(String[] args) { int a 10; // 定义了一个整型类型的变量 a&#xff0c;它的值是 10 int b …

区块链推广海外市场怎么做,CloudNEO服务商免费为您定制个性化营销方案

随着区块链技术的不断发展和应用场景的扩大&#xff0c;区块链项目希望能够进入海外市场并取得成功已成为越来越多公司的目标之一。然而&#xff0c;要在海外市场推广区块链项目&#xff0c;需要采取有效的营销策略和措施。作为您的区块链项目营销服务商&#xff0c;CloudNEO将…

后端程序员入门react笔记(八)-redux的使用和项目搭建

一个更好用的文档 添加链接描述 箭头函数的简化 //简化前 function countIncreAction(data) {return {type:"INCREMENT",data} } //简化后 const countIncreAction data>({type:"INCREMENT",data })react UI组件库相关资料 组件库连接和推荐 antd组…

Python 多线程大批量处理文件小程序

说明 平时偶尔需要进行重复性的对文件进行重命名、格式转化等。假设以文件复制功能作为目标&#xff0c;设计一个小程序使用多线程对文件进行批量复制。&#xff08;其实以后主要目标是针对Realsense的raw文件进行批量的转化&#xff0c;并借助多线程加速&#xff09; 代码 i…

uv 必备的工具 ps ai 全家桶合集

非常稀有的资源 &#xff0c;必应搜索 易品资源yipinziyuan 可以找到

sqllab第二十关通关笔记

知识点&#xff1a; cookie注入 可以进行url解析错误注入传参位置 get请求post请求cookie传参 输入admin admin进行登录&#xff0c;抓取当前数据包 通过放包发现是一个302跳转的响应包&#xff0c;页面只有一个 I Love Cookies&#xff1b;没什么信息 通过点击页面上方的按钮…

若你有才能,最好能遇上识才之人,高俅发迹的故事很好诠释了千里马与伯乐的关系

若你有才能&#xff0c;最好能遇上识才之人&#xff0c;高俅发迹的故事很好诠释了千里马与伯乐的关系 其实&#xff0c;“千里马”和“伯乐”都是中国古代传说里的角色。伯乐是古代一个善于相马&#xff08;识别马的好坏&#xff09;的人&#xff0c;而“千里马”则是指一匹能跑…

数通-路由技术基础介绍

自治系统——AS&#xff1b;LAN和广播域&#xff1b;CN-2——精品线路 路由器互联网段为同网段&#xff08;不同网段会造成三层不通&#xff0c;非直连则不会产生直连路由&#xff09; 路由选路&#xff0c;一个路由器的各个接口不能配置相同网段。 IP路由表&#xff1a;例&…

前端学习之css样式 背景样式、字体样式、列表样式、边框样式、内外边距元素属性的转换

背景样式 html文件 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>背景样式</title><link rel"stylesheet" href"../css/3.1背景样式.css"> </head> <bo…

华为云APIG跨域资源共享方案

## 浏览器的同源策略 浏览器的同源策略是一种安全机制&#xff0c;旨在保护用户的信息安全和隐私。它限制了一个网页的脚本只能与来自同一源的资源进行交互&#xff0c;即同源策略要求页面中加载的所有资源&#xff08;包括脚本、样式表、图片等&#xff09;必须来自相同的**域…

python之万花尺

1、使用模块 import sys, random, argparse import numpy as np import math import turtle import random from PIL import Image from datetime import datetime from math import gcd 依次使用pip下载即可 2、代码 import sys, random, argparse import numpy as np imp…

通俗易懂的Python循环讲解

循环用于重复执行一些程序块。从上一讲的选择结构&#xff0c;我们已经看到了如何用缩进来表示程序块的隶属关系。循环也会用到类似的写法。 for循环 for循环需要预先设定好循环的次数(n)&#xff0c;然后执行隶属于for的语句n次。 基本构造是 for 元素 in 序列: statemen…

【设计模式】Java 设计模式之装饰者模式(Decorator)

装饰者模式&#xff08;Decorator Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许用户通过在一个对象上动态地添加一些职责来增强其功能。这种模式将对象的核心职责与装饰功能分开&#xff0c;使得用户可以在运行时根据需要添加或删除装饰功能。 一、装饰者模式概…

进程间通信——匿名管道

匿名管道代码实现&#xff1a; #include <iostream> #include <unistd.h> #include <string.h> #include <stdlib.h> #include <sys/types.h> #include <sys/wait.h> #include <string> using namespace std; int main() {int fd[2…