Java For-Each Loop:sorting顺序

java for-each循环是否保证如果在列表中调用元素将按顺序呈现? 在我的testing中似乎确实如此,但似乎无法在任何文档中find明确提及的内容

List<Integer> myList;// [1,2,3,4] for (Integer i : myList) { System.out.println(i.intValue()); } #output 1,2,3,4 

是。 foreach循环将按迭代iterator()方法提供的顺序遍历列表。 请参阅Iterable接口的文档 。

如果您查看List的Javadoc,您可以看到列表是一个“有序集合”,并且iterator()方法返回一个按照“正确顺序”迭代的迭代器。

foreach循环将使用内置到Collection的迭代器,所以得到结果的顺序将取决于Collection是否维护元素的某种顺序。

所以,如果你循环一个ArrayList ,你会得到他们插入的顺序(假设你没有去sortingArrayList)的项目。 如果您正在循环HashSet ,则所有投注都将closures,因为HashSets不保留任何sorting。

如果您需要保证集合中的元素的顺序,请定义一个Comparator来build立该顺序并使用Collections.sort(Collection<T>, Comparator<? super T>)

是的,Java语言规范确保

 for (Iterator<Whatever> i = c.iterator(); i.hasNext(); ) whatEver(i.next()); 

相当于

 for (Whatever x : c) whatEver(x); 

不允许“订购变更”。

你可以使用for循环,如果你想以有序的方式使用for循环for (int i = 0; i < myList.length(); i++) 。 虽然,据我所知,foreach应该这样做。