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

《Java高级编程:从原理到实战 - 进阶知识篇五》

Java遍历集合的五种常用方法

在Java中,遍历集合有多种方式,下面介绍五种最常用的方法,并分析它们的特点和适用场景。

一. 普通for循环(适用于List)

特点

  • 通过索引访问元素

  • 只适用于实现了RandomAccess接口的List(如ArrayList)

  • 不适用于Set和Map

List<String> list = Arrays.asList("A", "B", "C");
for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));
}

二. 增强for循环(foreach)

特点

  • 语法简洁

  • 适用于所有Collection类型

  • 底层使用迭代器实现

  • 遍历过程中不能修改集合

List<String> list = Arrays.asList("A", "B", "C");
for (String item : list) {System.out.println(item);
}// 同样适用于Set
Set<String> set = new HashSet<>(list);
for (String item : set) {System.out.println(item);
}

 三. 迭代器(Iterator)

特点

  • 最原始的遍历方式

  • 可以在遍历时安全删除元素

  • 适用于所有Collection类型

List<String> list = Arrays.asList("A", "B", "C");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {String item = iterator.next();System.out.println(item);// 安全删除当前元素// iterator.remove();
}

 四. Java 8 forEach + Lambda

特点

  • 代码简洁

  • 支持Lambda表达式

  • 不能使用break/continue控制流程

List<String> list = Arrays.asList("A", "B", "C");
list.forEach(item -> System.out.println(item));// 或者使用方法引用
list.forEach(System.out::println);// Map的遍历
Map<String, Integer> map = new HashMap<>();
map.put("A", 1);
map.put("B", 2);
map.forEach((k, v) -> System.out.println(k + ":" + v));

五. Stream API(Java 8+)

特点

  • 支持函数式编程

  • 可以进行链式操作(过滤、映射等)

  • 并行流提高性能

List<String> list = Arrays.asList("A", "B", "C");
list.stream().forEach(System.out::println);// 并行处理
list.parallelStream().forEach(System.out::println);// 带过滤条件的遍历
list.stream().filter(s -> s.startsWith("A")).forEach(System.out::println);
http://www.xdnf.cn/news/273781.html

相关文章:

  • 统计学中的p值是什么?怎么使用?
  • Ray开源程序 是用于扩展 AI 和 Python 应用程序的统一框架。Ray 由一个核心分布式运行时和一组用于简化 ML 计算的 AI 库组成
  • 初识 iOS 开发中的证书固定
  • flink常用算子整理
  • QT | 常用控件
  • 个人文章不设置vip
  • MySQL复合查询全解析:从基础到多表关联与高级技巧
  • 【Hive入门】Hive与Spark SQL深度集成:Metastore与Catalog兼容性全景解析
  • 视频转GIF
  • 网狐系列三网通新钻石娱乐源码全评:结构拆解、三端实测与本地部署问题记录
  • ResNet改进(37):DenseBlock模块实现
  • 游戏引擎学习第257天:处理一些 Win32 相关的问题
  • 【Python】一直没搞懂迭代器是什么。。
  • 【Linux】SELinux 的基本操作与防火墙的管理
  • C++负载均衡远程调用学习之上报功能与存储线程池
  • QT对象树
  • C++日志系统实现(二)
  • 三种方式存图分别输出“无向无权图”的“DFS序列”
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】3.2 缺失值检测与处理(NULL值填充/删除策略)
  • Spring MVC设计与实现
  • Win10下安装Linux-Ubuntu24.04双系统
  • 通讯协议开发实战:从零到一打造企业级通信解决方案
  • 第三方组件库:element-uiiviewVant
  • 《MATLAB实战训练营:从入门到工业级应用》工程实用篇-自动驾驶初体验:车道线检测算法实战(MATLAB2016b版)
  • LeetCode 热题 100 54. 螺旋矩阵
  • MVC 安全
  • 表驱动 FSM 在 STM32 上的高效实现与内存压缩优化——源码、性能与实践
  • 4个纯CSS自定义的简单而优雅的滚动条样式
  • 使用 IDEA + Maven 搭建传统 Spring MVC 项目的详细步骤(非Spring Boot)
  • 深入解析Linux进程间通信(IPC):机制、应用与最佳实践