哭死!Java循环还在for i++?这3种写法优雅到飞起

53 阅读2分钟

大家好,掘金敲码人报到~Java循环人人会写,但想写得简洁不踩坑,藏着不少进阶小技巧。告别死板for i++,3种实用写法,基础又进阶,代码清爽还少出错,看完直接替换你的老代码!

1. 增强for循环:遍历集合/数组首选,少写少错

最基础的进阶写法,Java5+就有,直接遍历元素不用下标,告别数组越界,遍历集合超省心,新手必学! ✅核心要点:仅遍历、不修改下标;集合/数组通用

// 传统for i++(繁琐,还可能下标越界)
String[] arr = {"Java","掘金","干货"};
for(int i=0; i<arr.length; i++){
    System.out.println(arr[i]);
}

// 增强for循环(简洁优雅,直接拿元素)
// 数组遍历
for(String str : arr){
    System.out.println(str);
}

// 集合遍历(更舒服,不用写get(i))
List<String> list = Arrays.asList("Java","掘金","干货");
for(String str : list){
    System.out.println(str);
}

 

2. forEach+Lambda:Java8+遍历天花板,一行搞定

增强for的升级版,Java8结合Lambda表达式,遍历集合直接一行收尾,代码极简,可读性拉满,进阶基础必备! ✅核心要点:集合专属;支持链式操作,可加过滤

List<String> list = Arrays.asList("Java进阶","掘金好文","循环技巧");

// 基础forEach+Lambda(一行遍历打印)
list.forEach(str -> System.out.println(str));

// 更简洁:方法引用写法
list.forEach(System.out::println);

// 进阶:结合过滤(不用额外写if,超香)
// 只打印包含"掘金"的元素
list.stream().filter(str -> str.contains("掘金")).forEach(System.out::println);

 

3. 迭代器遍历:集合删除必用,不踩并发修改坑

新手最容易踩的坑:增强for/forEach遍历集合时删除元素,必抛ConcurrentModificationException!迭代器是官方安全方案,基础进阶必掌握。

✅核心要点:支持遍历中删除;Iterator是基础,ListIterator支持双向遍历

List<String> list = new ArrayList<>(Arrays.asList("Java","掘金","干货","踩坑"));

// 错误示范:增强for遍历删除,直接报错
for(String str : list){
    if(str.equals("踩坑")){
        list.remove(str); // 抛异常!
    }
}

// 正确写法:Iterator安全删除
Iterator<String> it = list.iterator();
while(it.hasNext()){
    String str = it.next();
    if(str.equals("踩坑")){
        it.remove(); // 迭代器自带删除,安全不报错
    }
}
System.out.println(list); // 输出 [Java, 掘金, 干货]

 

总结

✅ 简单遍历(不删不改):优先增强for,简洁不踩下标坑

✅ 极简遍历(集合):forEach+Lambda,一行搞定超优雅

✅ 遍历删除(集合):必用迭代器,杜绝并发修改异常

这3种写法都是进阶偏基础,日常开发80%循环场景都能覆盖,告别死板for i++,代码写得又快又优雅~