2009-09-04 208 views
45

java for-each loop是否保证在列表中调用元素时会按顺序显示元素?在我的测试中,它确实的,但我似乎无法找到这个任何文件中明确提到Java For-Each Loop:排序顺序

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

#output 
1,2,3,4 

回答

3

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

+0

是的,但这真的很丑,我宁愿确定每一个 – Mike 2009-09-04 02:29:28

15

foreach循环将使用内置于Collection中的迭代器,因此得到结果的顺序将取决于Collection是否对元素保持某种顺序。

所以,如果你遍历一个ArrayList,你会得到他们被插入的顺序的项目(假设你没有去到排序的ArrayList)。如果您循环使用HashSet,则所有投注都将关闭,因为HashSets不保留任何排序。

如果你需要保证一个订单Collection中的元素,定义一个Comparator该规定,为了和使用Collections.sort(Collection<T>, Comparator<? super T>)

10

是,Java语言规范确保

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

相当于

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

没有 “订货变化” 是允许的。