Inv*_*ion 23 java foreach loops intellij-idea while-loop
ArrayList<Object> list = new ArrayList<Object>();
list.add(12);
list.add("Hello");
list.add(true);
list.add('c');
Iterator iterator = list.iterator();
while(iterator.hasNext())
{
System.out.println(iterator.next().toString());
}
Run Code Online (Sandbox Code Playgroud)
当我在IntelliJ IDEA中输入这个Java代码时,代码分析功能建议我用for循环替换while循环,因为我正在迭代一个集合.为什么是这样?
Jim*_*son 22
这是它想要你使用的:
for (Object o : list)
{
System.out.println(o.toString());
}
Run Code Online (Sandbox Code Playgroud)
这是自Java 1.5以来的语言,并且是惯用模式.只有在需要访问迭代器的其他方法(即remove()
)时才需要Iterator .
Mas*_*sim 14
因为你不太可能犯错误而且看起来更好; )
for( Object obj : list ) {
System.out.println( obj.toString() );
}
Run Code Online (Sandbox Code Playgroud)
Mat*_*att 11
因为你有检查Java语言迁移辅助 - 'while'循环可以用'for each'活动(这是默认的)替换,描述是
此检查报告循环,这些循环遍历集合或数组,并且可以用Java 5及更新版本中提供的"for each"迭代语法替换.设置Report java.util.List索引循环负责查找涉及list.get(索引)调用的循环.这些循环通常可以用foreach循环替换,除非它们在进程中修改底层列表,例如通过调用list.remove(index).如果是后者,foreach形式的循环可能会抛出ConcurrentModificationException.此检查仅报告项目或模块是否配置为使用5.0或更高的语言级别.
所以如果你不想被告知这个,那么在Inspections配置中取消选中该框