大家好,掘金敲码人报到~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++,代码写得又快又优雅~