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

Java集合遍历的方法有哪些

1.普通for循环

只适用于支持随机访问的集合

import java.util.*;public class NormalForDemo {public static void main(String[] args) {List<String> list = Arrays.asList("A", "B", "C");for (int i = 0; i < list.size(); i++) {System.out.println("索引 " + i + " -> " + list.get(i));}}
}

2.增强for循环

最常见、简洁,底层其实是迭代器(Iterator)

import java.util.*;public class ForEachDemo {public static void main(String[] args) {List<String> list = Arrays.asList("A", "B", "C");for (String s : list) {System.out.println(s);}}
}

3.Iterator 迭代器

支持安全删除(iterator.remove()),是遍历 Collection 的标准方式

import java.util.*;public class IteratorDemo {public static void main(String[] args) {List<String> list = new ArrayList<>(Arrays.asList("A", "B", "C"));Iterator<String> it = list.iterator();while (it.hasNext()) {String s = it.next();if ("B".equals(s)) {it.remove(); // 安全删除元素}System.out.println(s);}System.out.println("删除后的集合: " + list);}
}

4.ListIterator(双向迭代器)

Iterator的子类,仅用于 List,可以正向/反向遍历,还能在遍历时修改、插入元素

import java.util.*;public class ListIteratorDemo {public static void main(String[] args) {List<String> list = new ArrayList<>(Arrays.asList("A", "B", "C"));ListIterator<String> it = list.listIterator();while (it.hasNext()) {String s = it.next();if ("B".equals(s)) {it.set("BB");  // 修改当前元素it.add("X");   // 在当前位置插入元素}}// 反向遍历while (it.hasPrevious()) {System.out.println(it.previous());}}
}

5.forEach + Lambda (Java 8+)

函数式写法,简洁优雅

import java.util.*;public class ForEachLambdaDemo {public static void main(String[] args) {List<String> list = Arrays.asList("A", "B", "C");// Lambdalist.forEach(s -> System.out.println(s));// 方法引用list.forEach(System.out::println);}
}

6.Stream API (Java 8+)

适合做链式处理,可以配合 filter、map、sorted 等进行过滤、转换、排序等操作

import java.util.*;public class StreamDemo {public static void main(String[] args) {List<String> list = Arrays.asList("apple", "banana", "cherry");list.stream().filter(s -> s.startsWith("b")).map(String::toUpperCase).forEach(System.out::println); // 输出 BANANA}
}

http://www.xdnf.cn/news/1429075.html

相关文章:

  • 使用Spark计算WordCount
  • 美团 LongCat 开源大模型60 亿参数 MoE 架构,赋能开发者加速 AI 应用落地
  • vue2中如何使用Ant Design Vue 中的 Tooltip 文字提示
  • 242. 有效的字母异位词| 349. 两个数组的交集
  • 通信中FDD和TDD的区别
  • 【JavaEE】多线程案例
  • 使用 Python 的 SymPy 进行符号计算
  • 机器学习回顾——决策树详解
  • 详解Grafana k6 的阈值(Thresholds)
  • FPGA时序分析(三)--基础知识
  • Leetcode_206.反转链表(递归)
  • 【嵌入式电机控制#进阶7】V/F强拖启动
  • 变频器实习DAY41 单元测试介绍
  • 前端实现解析【导入】数据后调用批量处理接口
  • Redis有哪些部署方案?了解哨兵机制吗?
  • AI文档产品与传统OCR软件的根本区别是什么?
  • 手写Muduo网络库核心代码2--Poller、EPollPoller详细讲解
  • 百度智能云,除了AI还有啥?
  • 线程特定存储
  • Go语言开发合并文件小工具
  • go命令行工具:如何在现有的工程里加入使用cobra
  • 苹果手机文本转音频,自行制作背诵素材
  • Redis 持久化机制详解
  • 《WINDOWS 环境下32位汇编语言程序设计》第10章 内存管理和文件操作(2)
  • 文华财经wh6波段多空指标-变色K做多做空信号,抄底逃顶主图幅图
  • Docker启动两个Redis镜像并配置一主一从
  • Linux内核O(1)调度算法
  • 汽车制造工厂如何应用力控SCADA实现全方位智能监控与诊断
  • 从“成本中心”到“生产力引擎”:MCP如何将AI从“建议者”变为“执行者”
  • 2025年新版C语言 模电数电及51单片机Proteus嵌入式开发入门实战系统学习,一整套全齐了再也不用东拼西凑