Java 迭代非泛型列表的最佳方式是什么?

Java 迭代非泛型列表的最佳方式是什么?,java,loops,iteration,raw-types,Java,Loops,Iteration,Raw Types,我必须使用一段旧代码,其中有一个列表,我需要对其进行迭代。Foreach循环不工作。哪种方法是最好和最安全的 范例 private void process(List objects) { someloop { //do something with list item //lets assume objects in the List are instances of Content class } } 使用迭代器: It

我必须使用一段旧代码,其中有一个列表,我需要对其进行迭代。Foreach循环不工作。哪种方法是最好和最安全的

范例

private void process(List objects) {
    someloop {
        //do something with list item
        //lets assume objects in the List are instances of Content class
    }           
}

使用迭代器:

Iterator iter = objects.iterator();
while (iter.hasNext()) {
    Object element = iter.next();
}
或者最好直接针对每个:

for (Object obj : objects) {
}

如果需要从列表中删除当前元素,请使用迭代器:

for (Iterator it = list.iterator(); it.hasNext();) {
    Foo foo = (Foo) it.next();
    // ...
    it.remove();
}
或者使用foreach循环:

for (Object o : list) {
    Foo foo = (Foo) o;
    // ...
}

为什么for-each循环不起作用?您的意思是需要从列表中删除元素,还是做一些其他事情来阻止for-each的使用?请澄清。我尝试了内容类(而不是对象)的foreach循环,这就是为什么它不起作用。我的错误,我没有意识到。谢谢Foreach循环不工作意味着什么?这似乎是低质量问题标志的候选。所以…首先,你说foreach循环不起作用,不要解释你的意思,然后接受使用foreach循环的答案。这是低质量问题的教科书定义。已修复。非常感谢。我更喜欢使用for循环,因为它将迭代器的作用域缩小到循环中?对于某些列表实现,这会导致并发访问异常吗?这只是为了说明为什么可能需要迭代器:只有使用迭代器才能在迭代集合时从集合中删除元素。使用foreach循环是不可能的,使用迭代器是避免ConcurrentModificationException的唯一方法。如果不需要删除,则foreach循环会更简单、更短。@James DW-使用迭代器时,如果愿意,可以删除元素。当为每个循环使用时,你不能。一个interator比一个简单的for()循环更有效吗?没有区别。For-each在内部使用迭代器。