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遍历
ListIterator是Iterator的子接口,它扩展了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编程中,集合(Collection)框架是处理对象集合的核心工具。它提供了一套统一的接口和类来存储和操作对象集合。遍历集合是日常开发中的一项基本任务,本文将深入探讨Java Collection集合的遍历方法,并提供实际…...
基于STM32的智能充电桩:集成RTOS、MQTT与SQLite的先进管理系统设计思路
一、项目概述 随着电动车的普及,充电桩作为关键基础设施,其智能化、网络化管理显得尤为重要。本项目旨在基于STM32微控制器开发一款智能充电桩,能够实现高效的充电监控与管理。项目通过物联网技术,提供实时数据监测、远程管理、用…...
windows 查看yolo11 是否安装了cuda
一、通过python查看 import torch print(torch.cuda.is_available()) 二、通过 pip list 查看 在conda环境 可以看出torch 后面是2.1.4 cu124 说明GPU环境安装成功。 如果是cpu环境,则是:...
机器学习【激活函数】
笔记内容侵权联系删 激活函数的概念神经网络中的每个神经元节点接受上一层神经元的输出值作为本神经元的输入值,并将输入值传递给下一层,输入层神经元节点会将输入属性值直接传递给下一层(隐层或输出层)。在多层神经网络中,上层节点的输入在加…...
【OpenEuler】配置虚拟ip
OpenEuler系统手动配置虚ip 介绍操作方法临时生效永久生效 验证 介绍 我们知道通过keepalived服务可以为linux服务器设置虚拟ip,但是有些特殊场景下若无法安装部署keepalived服务,则需要通过手动设置的方式,配置服务器的虚拟ip。 本方案提供…...
数据分析师证书怎么考
在信息技术飞速发展的今天,数据分析已成为推动各行业进步的核心引擎。CDA(Certified Data Analyst)数据分析师证书以其权威性和实用性,成为许多数据分析从业者的职业加速器。本文将深入探讨如何考取CDA数据分析师证书,…...
【人工智能】text2vec-large-chinese模型搭建本地知识库
本demo使用 text2vec-large-chinese 模型进行文本处理,然后再过 bge-reranker-v2-m3进行增强 1. 对文本进行向量处理,并保存只至本地 from sentence_transformers import SentenceTransformer import torch import numpy as np import faiss import os …...
前端入门一之ES6--递归、浅拷贝与深拷贝、正则表达式、es6、解构赋值、箭头函数、剩余参数、String、Set
前言 JS是前端三件套之一,也是核心,本人将会更新JS基础、JS对象、DOM、BOM、ES6等知识点,这篇是ES6;这篇文章是本人大一学习前端的笔记;欢迎点赞 收藏 关注,本人将会持续更新。 文章目录 10、递归10.1、阶层案例10.…...
DevOps工程技术价值流:加速业务价值流的落地实践与深度赋能
DevOps的兴起,得益于敏捷软件开发的普及与IT基础设施代码化管理的革新。敏捷宣言虽已解决了研发流程中的诸多挑战,但代码开发仅是漫长价值链的一环,开发前后的诸多问题仍亟待解决。与此同时,虚拟化和云计算技术的飞跃,…...
IP数据云 识别和分析tor、proxy等各类型代理
在网络上使用代理(tor、proxy、relay等)进行访问的目的是为了规避网络的限制、隐藏真实身份或进行其他的不正当行为。 对代理进行识别和分析可以防止恶意攻击、监控和防御僵尸网络和提高防火墙效率等,同时也可以对用户行为进行分析ÿ…...
vue2 自动化部署 shell 脚本
需求场景:在云平台中进行开发时,由于无法连接外网,在部署前端项目时,是通过本地打包再上传到服务器的方式进行部署的。基于这种部署场景,通过 shell 脚本进行部署流程优化,具体如下: 1、服务器…...
服务器数据恢复——Ext4文件系统使用fsck后mount不上的数据恢复案例
关于Ext4文件系统的几个概念: 块组:Ext4文件系统的全部空间被划分为若干个块组,每个块组结构基本上相同。 块组描述符表:每个块组都对应一个块组描述符,这些块组描述符统一放在文件系统的前部,称为块组描述…...
CTF攻防世界小白刷题自学笔记14
fileclude,难度:1,方向:Web 题目来源:CTF 题目描述:好多file呀! 给一下题目链接:攻防世界Web方向新手模式第17题。 打开一看,这熟悉的味道,跟上一篇文章基本一摸一样的ÿ…...
家政服务小程序,家政行业数字化发展下的优势
今年以来,家政市场需求持续增长,市场规模达到了万亿级别,家政服务行业成为了热门行业之一! 家政服务种类目前逐渐呈现了多样化,月嫂、保姆、做饭保洁、收纳、维修等家政种类不断出现,满足了居民日益增长的…...
Springboot如何打包部署服务器
文章目的:java项目打包成jar包或war包, 放在服务器上去运行 一、编写打包配置 1. pom.xml 在项目中的pom.xml文件里面修改<build>...</build>的代码 >> 简单打包成Jar形式,参考示例: <build><fina…...
ubuntu将firewall-config导出为.deb文件
firewall-config ubuntu是canonial 公司维护的,用wireshark测过,开机会给他们公司发遥测(开了ufw阻塞所有连接也一样,canonial在里面把代码改了)firewall-config是fedora(爱好者维护,公益版本)自带的防火墙…...
C++算法练习-day40——617.合并二叉树
题目来源:. - 力扣(LeetCode) 题目思路分析 题目:给定两棵二叉树 root1 和 root2,请合并这两棵树,即将 root2 中的每个节点合并到 root1 中,合并的规则是如果两个节点在同一位置(即…...
2024数维杯国际赛C题【脉冲星定时噪声推断和大气时间信号的时间延迟推断的建模】思路详解
脉冲星是快速旋转的中子星,具有连续和稳定的旋转,因此被称为“宇宙的灯塔”。对脉冲星的空间观测在深空航天器导航和时间标准的维护中起着关键作用。 将脉冲星时间应用于原子时间的保持,预期可以提高本地原子钟的稳定性和可靠性,代…...
【Linux】MTD 分区
我在文章 计算机储存与分区 中讲了关于 GUID 分区和 MBR 分区,他们在 PC 上很常见,但是在嵌入式系统上,Linux 会使用 MTD 分区,至于什么是 MTD 分区,请看: NAND/MTD/UBI/UBIFS概念及使用方法 General MTD…...
MySQL(5)【数据类型 —— 字符串类型】
阅读导航 引言一、char🎯基本语法🎯使用示例 二、varchar🎯基本语法🎯使用示例 三、char 和 varchar 比较四、日期和时间类型1. 基本概念2. 使用示例 五、enum 和 set🎯基本语法 引言 之前我们聊过MySQL中的数值类型&…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...
安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...
LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》
这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...
Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...
零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程
STM32F1 本教程使用零知标准板(STM32F103RBT6)通过I2C驱动ICM20948九轴传感器,实现姿态解算,并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化,适合嵌入式及物联网开发者。在基础驱动上新增…...
第八部分:阶段项目 6:构建 React 前端应用
现在,是时候将你学到的 React 基础知识付诸实践,构建一个简单的前端应用来模拟与后端 API 的交互了。在这个阶段,你可以先使用模拟数据,或者如果你的后端 API(阶段项目 5)已经搭建好,可以直接连…...
怎么开发一个网络协议模块(C语言框架)之(六) ——通用对象池总结(核心)
+---------------------------+ | operEntryTbl[] | ← 操作对象池 (对象数组) +---------------------------+ | 0 | 1 | 2 | ... | N-1 | +---------------------------+↓ 初始化时全部加入 +------------------------+ +-------------------------+ | …...
