当前位置: 首页 > news >正文

Java集合框架之Collection集合遍历

引言

在Java编程中,集合(Collection)框架是处理对象集合的核心工具。它提供了一套统一的接口和类来存储和操作对象集合。遍历集合是日常开发中的一项基本任务,本文将深入探讨Java Collection集合的遍历方法,并提供实际的代码示例。

Java Collection框架概览

Java Collection框架主要由以下几个部分组成:

  • List:有序集合,可以包含重复元素。
  • Set:不允许重复元素的集合。
  • Queue:队列,遵循先进先出(FIFO)原则。
  • Map:键值对集合,键不允许重复。

遍历List集合

1. 使用for-each循环遍历

for-each循环(也称为增强型for循环)是Java 5引入的一种简化数组和集合遍历的语法。它简洁且易于阅读,适用于大多数遍历场景。

 List<String> list = new ArrayList<>();list.add("Apple");list.add("Banana");list.add("Cherry");// 使用for-each循环遍历for (String fruit : list) {System.out.println(fruit);}

2. 使用迭代器(Iterator)遍历

Iterator接口提供了一种统一的方法来遍历集合。它不仅可以遍历集合,还可以安全地在遍历过程中删除元素。

      List<String> list = new ArrayList<>();list.add("Apple");list.add("Banana");list.add("Cherry");// 使用Iterator遍历Iterator<String> iterator = list.iterator();while (iterator.hasNext()) {String fruit = iterator.next();System.out.println(fruit);// 可以在这里安全地删除元素// if (someCondition) {//     iterator.remove();// }}

3. 使用for循环遍历(基于索引)

对于List集合,由于它是有序的,并且支持基于索引的访问,因此可以使用传统的for循环进行遍历。

    List<String> list = new ArrayList<>();list.add("Apple");list.add("Banana");list.add("Cherry");// 使用for循环遍历for (int i = 0; i < list.size(); i++) {String fruit = list.get(i);System.out.println(fruit);}
4. 使用Java 8的Stream API遍历

Java 8引入了Stream API,提供了一种声明性的方式来处理集合数据。Stream API不仅支持顺序和并行处理,还可以方便地进行过滤、排序、映射等操作。

    List<String> list = new ArrayList<>();list.add("Apple");list.add("Banana");list.add("Cherry");// 使用Stream API遍历list.stream().forEach(System.out::println);
5. 使用ListIterator遍历

ListIteratorIterator的子接口,它扩展了Iterator的功能,允许双向遍历列表,并可以获取列表中元素的索引,还可以添加、替换元素。

List<String> list = new ArrayList<>();list.add("Apple");list.add("Banana");list.add("Cherry");// 使用ListIterator遍历ListIterator<String> listIterator = list.listIterator();while (listIterator.hasNext()) {String fruit = listIterator.next();System.out.println(fruit);}// 反向遍历while (listIterator.hasPrevious()) {String fruit = listIterator.previous();System.out.println("Reversed: " + fruit);}

遍历Set集合

Set接口同样继承自Collection接口,但它不允许元素重复。遍历Set集合的方法与List类似:

1.使用foreach循环

Set<String> set = new HashSet<>(Arrays.asList("Java", "Python", "C++"));
for (String item : set) {System.out.println(item);
}

2. 使用迭代器(Iterator)

Iterator<String> iterator = set.iterator();
while (iterator.hasNext()) {System.out.println(iterator.next());
}

遍历Map集合

Map接口不同于List和Set,它存储键值对。遍历Map集合可以通过以下几种方式:

1.遍历键集(keySet)

Map<String, String> map = new HashMap<>();
map.put("Java", "Island");
map.put("Python", "Cave");
for (String key : map.keySet()) {System.out.println(key + ": " + map.get(key));
}

2. 遍历值集(values)

for (String value : map.values()) {System.out.println(value);
}

3. 遍历条目集(entrySet)

for (Map.Entry<String, String> entry : map.entrySet()) {System.out.println(entry.getKey() + ": " + entry.getValue());
}

遍历Queue集合

Queue接口是Collection的一个子接口,用于表示队列。遍历Queue集合通常使用迭代器:

Queue<String> queue = new LinkedList<>(Arrays.asList("Java", "Python", "C++"));
Iterator<String> iterator = queue.iterator();
while (iterator.hasNext()) {System.out.println(iterator.next());
}

总结

遍历Java Collection集合是处理集合数据的基本技能。不同的集合类型(List、Set、Map、Queue)提供了不同的遍历方法。掌握这些方法可以帮助你更高效地处理集合数据。在实际开发中,选择合适的遍历方法可以提高代码的可读性和性能。

希望本文能够帮助你更好地理解和使用Java Collection集合的遍历方法。如果你有任何问题或需要进一步的讨论,请在评论区留下你的想法。

相关文章:

Java集合框架之Collection集合遍历

引言 在Java编程中&#xff0c;集合&#xff08;Collection&#xff09;框架是处理对象集合的核心工具。它提供了一套统一的接口和类来存储和操作对象集合。遍历集合是日常开发中的一项基本任务&#xff0c;本文将深入探讨Java Collection集合的遍历方法&#xff0c;并提供实际…...

基于STM32的智能充电桩:集成RTOS、MQTT与SQLite的先进管理系统设计思路

一、项目概述 随着电动车的普及&#xff0c;充电桩作为关键基础设施&#xff0c;其智能化、网络化管理显得尤为重要。本项目旨在基于STM32微控制器开发一款智能充电桩&#xff0c;能够实现高效的充电监控与管理。项目通过物联网技术&#xff0c;提供实时数据监测、远程管理、用…...

windows 查看yolo11 是否安装了cuda

一、通过python查看 import torch print(torch.cuda.is_available()) 二、通过 pip list 查看 在conda环境 可以看出torch 后面是2.1.4 cu124 说明GPU环境安装成功。 如果是cpu环境&#xff0c;则是&#xff1a;...

机器学习【激活函数】

笔记内容侵权联系删 激活函数的概念神经网络中的每个神经元节点接受上一层神经元的输出值作为本神经元的输入值&#xff0c;并将输入值传递给下一层&#xff0c;输入层神经元节点会将输入属性值直接传递给下一层(隐层或输出层)。在多层神经网络中&#xff0c;上层节点的输入在加…...

【OpenEuler】配置虚拟ip

OpenEuler系统手动配置虚ip 介绍操作方法临时生效永久生效 验证 介绍 我们知道通过keepalived服务可以为linux服务器设置虚拟ip&#xff0c;但是有些特殊场景下若无法安装部署keepalived服务&#xff0c;则需要通过手动设置的方式&#xff0c;配置服务器的虚拟ip。 本方案提供…...

数据分析师证书怎么考

在信息技术飞速发展的今天&#xff0c;数据分析已成为推动各行业进步的核心引擎。CDA&#xff08;Certified Data Analyst&#xff09;数据分析师证书以其权威性和实用性&#xff0c;成为许多数据分析从业者的职业加速器。本文将深入探讨如何考取CDA数据分析师证书&#xff0c;…...

【人工智能】text2vec-large-chinese模型搭建本地知识库

本demo使用 text2vec-large-chinese 模型进行文本处理&#xff0c;然后再过 bge-reranker-v2-m3进行增强 1. 对文本进行向量处理&#xff0c;并保存只至本地 from sentence_transformers import SentenceTransformer import torch import numpy as np import faiss import os …...

前端入门一之ES6--递归、浅拷贝与深拷贝、正则表达式、es6、解构赋值、箭头函数、剩余参数、String、Set

前言 JS是前端三件套之一&#xff0c;也是核心&#xff0c;本人将会更新JS基础、JS对象、DOM、BOM、ES6等知识点&#xff0c;这篇是ES6;这篇文章是本人大一学习前端的笔记&#xff1b;欢迎点赞 收藏 关注&#xff0c;本人将会持续更新。 文章目录 10、递归10.1、阶层案例10.…...

DevOps工程技术价值流:加速业务价值流的落地实践与深度赋能

DevOps的兴起&#xff0c;得益于敏捷软件开发的普及与IT基础设施代码化管理的革新。敏捷宣言虽已解决了研发流程中的诸多挑战&#xff0c;但代码开发仅是漫长价值链的一环&#xff0c;开发前后的诸多问题仍亟待解决。与此同时&#xff0c;虚拟化和云计算技术的飞跃&#xff0c;…...

IP数据云 识别和分析tor、proxy等各类型代理

在网络上使用代理&#xff08;tor、proxy、relay等&#xff09;进行访问的目的是为了规避网络的限制、隐藏真实身份或进行其他的不正当行为。 对代理进行识别和分析可以防止恶意攻击、监控和防御僵尸网络和提高防火墙效率等&#xff0c;同时也可以对用户行为进行分析&#xff…...

vue2 自动化部署 shell 脚本

需求场景&#xff1a;在云平台中进行开发时&#xff0c;由于无法连接外网&#xff0c;在部署前端项目时&#xff0c;是通过本地打包再上传到服务器的方式进行部署的。基于这种部署场景&#xff0c;通过 shell 脚本进行部署流程优化&#xff0c;具体如下&#xff1a; 1、服务器…...

服务器数据恢复——Ext4文件系统使用fsck后mount不上的数据恢复案例

关于Ext4文件系统的几个概念&#xff1a; 块组&#xff1a;Ext4文件系统的全部空间被划分为若干个块组&#xff0c;每个块组结构基本上相同。 块组描述符表&#xff1a;每个块组都对应一个块组描述符&#xff0c;这些块组描述符统一放在文件系统的前部&#xff0c;称为块组描述…...

CTF攻防世界小白刷题自学笔记14

fileclude&#xff0c;难度&#xff1a;1&#xff0c;方向&#xff1a;Web 题目来源:CTF 题目描述:好多file呀&#xff01; 给一下题目链接&#xff1a;攻防世界Web方向新手模式第17题。 打开一看&#xff0c;这熟悉的味道&#xff0c;跟上一篇文章基本一摸一样的&#xff…...

家政服务小程序,家政行业数字化发展下的优势

今年以来&#xff0c;家政市场需求持续增长&#xff0c;市场规模达到了万亿级别&#xff0c;家政服务行业成为了热门行业之一&#xff01; 家政服务种类目前逐渐呈现了多样化&#xff0c;月嫂、保姆、做饭保洁、收纳、维修等家政种类不断出现&#xff0c;满足了居民日益增长的…...

Springboot如何打包部署服务器

文章目的&#xff1a;java项目打包成jar包或war包&#xff0c; 放在服务器上去运行 一、编写打包配置 1. pom.xml 在项目中的pom.xml文件里面修改<build>...</build>的代码 >> 简单打包成Jar形式&#xff0c;参考示例&#xff1a; <build><fina…...

ubuntu将firewall-config导出为.deb文件

firewall-config ubuntu是canonial 公司维护的&#xff0c;用wireshark测过&#xff0c;开机会给他们公司发遥测&#xff08;开了ufw阻塞所有连接也一样&#xff0c;canonial在里面把代码改了&#xff09;firewall-config是fedora(爱好者维护&#xff0c;公益版本)自带的防火墙…...

C++算法练习-day40——617.合并二叉树

题目来源&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 题目思路分析 题目&#xff1a;给定两棵二叉树 root1 和 root2&#xff0c;请合并这两棵树&#xff0c;即将 root2 中的每个节点合并到 root1 中&#xff0c;合并的规则是如果两个节点在同一位置&#xff08;即…...

2024数维杯国际赛C题【脉冲星定时噪声推断和大气时间信号的时间延迟推断的建模】思路详解

脉冲星是快速旋转的中子星&#xff0c;具有连续和稳定的旋转&#xff0c;因此被称为“宇宙的灯塔”。对脉冲星的空间观测在深空航天器导航和时间标准的维护中起着关键作用。 将脉冲星时间应用于原子时间的保持&#xff0c;预期可以提高本地原子钟的稳定性和可靠性&#xff0c;代…...

【Linux】MTD 分区

我在文章 计算机储存与分区 中讲了关于 GUID 分区和 MBR 分区&#xff0c;他们在 PC 上很常见&#xff0c;但是在嵌入式系统上&#xff0c;Linux 会使用 MTD 分区&#xff0c;至于什么是 MTD 分区&#xff0c;请看&#xff1a; NAND/MTD/UBI/UBIFS概念及使用方法 General MTD…...

MySQL(5)【数据类型 —— 字符串类型】

阅读导航 引言一、char&#x1f3af;基本语法&#x1f3af;使用示例 二、varchar&#x1f3af;基本语法&#x1f3af;使用示例 三、char 和 varchar 比较四、日期和时间类型1. 基本概念2. 使用示例 五、enum 和 set&#x1f3af;基本语法 引言 之前我们聊过MySQL中的数值类型&…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇&#xff0c;相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程&#xff0c;其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线&#xff0c; n r n_r nr​ 根接收天线的 MIMO 系…...

管理学院权限管理系统开发总结

文章目录 &#x1f393; 管理学院权限管理系统开发总结 - 现代化Web应用实践之路&#x1f4dd; 项目概述&#x1f3d7;️ 技术架构设计后端技术栈前端技术栈 &#x1f4a1; 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 &#x1f5c4;️ 数据库设…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式&#xff0c;然后找到相应的网卡&#xff08;可以查看自己本机的网络连接&#xff09; windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置&#xff0c;选择刚才配置的桥接模式 静态ip设置&#xff1a; 我用的ubuntu24桌…...

Spring Security 认证流程——补充

一、认证流程概述 Spring Security 的认证流程基于 过滤器链&#xff08;Filter Chain&#xff09;&#xff0c;核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤&#xff1a; 用户提交登录请求拦…...

消息队列系统设计与实践全解析

文章目录 &#x1f680; 消息队列系统设计与实践全解析&#x1f50d; 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡&#x1f4a1; 权衡决策框架 1.3 运维复杂度评估&#x1f527; 运维成本降低策略 &#x1f3d7;️ 二、典型架构设计2.1 分布式事务最终一致…...