Java中含冒号的for循环语法疑问求助
Java增强for循环(for-each)语法说明
你遇到的带冒号的for循环是Java 5开始引入的增强for循环,也常被称为for-each循环,专门用来简化集合或数组的遍历操作,不用手动维护索引变量。
语法拆解
针对你给出的代码:
for (int u: adjList.get(v)) { instruction }
int u:声明一个与遍历目标元素类型匹配的局部变量,每次循环时,会把集合里的下一个元素赋值给u(这里adjList.get(v)返回的是List<Integer>,int会自动拆箱接收包装类Integer的值)。adjList.get(v):这是你要遍历的目标集合——从adjList(应该是List<List<Integer>>类型,也就是列表的列表)中取出索引为v的子列表,循环会依次遍历这个子列表里的每一个元素。
和传统for循环的等价写法
这段增强for循环完全等价于下面的传统for循环逻辑:
List<Integer> targetList = adjList.get(v); for (int i = 0; i < targetList.size(); i++) { int u = targetList.get(i); // instruction }
使用注意事项
- 增强for循环更适合只需要遍历元素、不需要操作索引的场景,代码更简洁易读。
- 如果需要在循环中修改集合元素(比如通过索引替换元素)、或者需要用到索引做额外逻辑,还是用传统for循环更灵活。
内容的提问来源于stack exchange,提问作者kirilinko
相关产品推荐
相关产品推荐

