java遍历的所有方法及优缺点

张开发
2026/4/12 12:09:48 15 分钟阅读

分享文章

java遍历的所有方法及优缺点
普通 for 循环样子javafor (int i 0; i list.size(); i) { 盒子 b list.get(i); }你自己拿着编号 0、1、2… 自己去货架上拿。优点想拿第几个就拿第几个还能顺手改里面的货。缺点自己数号码累数错就“越界”摔地上对 Set、Map 这类没编号的货架用不了。增强 for 循环for-each样子javafor (盒子 b : list) { 扫一下 b; }仓库管理员把盒子一个一个递到你手上你不用管号码。优点代码最少不会数错号。缺点他递给你时你不能中途“抽走”某个盒子删不了也不知道是第几个。Iterator迭代器样子javaIterator盒子 it list.iterator(); while (it.hasNext()) { 盒子 b it.next(); if (b 是坏的) it.remove(); // 直接扔掉 }给你一把“智能扫码枪”扫一个出一个还能顺手把坏的丢垃圾桶。优点边扫边扔安全不会砸到脚。缺点要多写几行只能单向扫不能回头。ListIterator双向扫码枪样子javaListIterator盒子 it list.listIterator(); while (it.hasNext()) { 正着扫; } while (it.hasPrevious()) { 倒着扫; }扫码枪带“倒车”键可以前后来回扫还能在任意位置插新盒子。优点能回头、能插货、能改货。缺点只有 List 货架能用代码更啰嗦。JDK 8 的 forEach Lambda样子javalist.forEach(b - { 扫一下 b; });管理员直接开传送带盒子哗哗流过你站在旁边“盖章”。优点一句话搞定看着爽。缺点传送带一旦开动就停不下来不能 break想删盒子也删不了。Stream API带流水线的高级传送带样子javalist.stream() .filter(b - b 是好的) .map(b - b 打标签) .forEach(b - 入库);不但传送还能自动把坏的踢出去、把盒子贴标签、最后分组装箱全程不用你动手。优点功能最强大支持并行多线程一起干。缺点小仓库用就显得“杀鸡用牛刀”调试略麻烦同样改不了原货架。场景用啥只看看不删不改增强 for要删元素Iterator要来回/插元素ListIterator要编号普通 for想写酷炫一行代码forEach Lambda数据量大还要过滤、分组Stream“只看不碰用增强 for要删就用 Iterator要编号回普通 for酷炫一行上 Lambda复杂流水线 Stream 来帮忙。”

更多文章