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
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
是的。 foreach循环将按照iterator()
方法提供的顺序遍历列表。请参阅documentation for the Iterable interface。
如果你看Javadoc for List你可以看到一个列表是一个“有序集合”,并且iterator()
方法返回一个迭代器,它以“正确的顺序”迭代。
你可以使用一个for循环,一拉for (int i = 0; i < myList.length(); i++)
,如果你想这样做在一个有序的方式。虽然,据我所知,foreach应该按顺序做。
foreach
循环将使用内置于Collection
中的迭代器,因此得到结果的顺序将取决于Collection
是否对元素保持某种顺序。
所以,如果你遍历一个ArrayList
,你会得到他们被插入的顺序的项目(假设你没有去到排序的ArrayList)。如果您循环使用HashSet
,则所有投注都将关闭,因为HashSets不保留任何排序。
如果你需要保证一个订单Collection中的元素,定义一个Comparator
该规定,为了和使用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);
没有 “订货变化” 是允许的。
是的,但这真的很丑,我宁愿确定每一个 – Mike 2009-09-04 02:29:28