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应该这样做。