首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java For-Each循环:排序顺序

Java For-Each循环:排序顺序
EN

Stack Overflow用户
提问于 2009-09-04 02:24:12
回答 4查看 54K关注 0票数 47

如果在列表上调用,java for-each循环能保证元素按顺序呈现吗?在我的测试中,似乎确实如此,但我似乎在任何文档中都没有明确提到这一点

代码语言:javascript
复制
List<Integer> myList;// [1,2,3,4]
for (Integer i : myList) {
  System.out.println(i.intValue());
}

#output
1,2,3,4
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-09-04 02:35:14

是。foreach循环将按照iterator()方法提供的顺序遍历列表。请参阅documentation for the Iterable interface

如果查看Javadoc for List,就会发现列表是一个“有序集合”,并且iterator()方法返回一个“按正确顺序”迭代的迭代器。

票数 48
EN

Stack Overflow用户

发布于 2009-09-04 02:29:31

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

因此,如果您循环遍历ArrayList,您将获得插入顺序的项(假设您没有继续对ArrayList进行排序)。如果你在一个HashSet上循环,所有的赌注都是无效的,因为HashSets不维护任何顺序。

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

票数 15
EN

Stack Overflow用户

发布于 2009-09-04 02:31:56

是的,Java语言规范确保了

代码语言:javascript
复制
for (Iterator<Whatever> i = c.iterator(); i.hasNext(); )
    whatEver(i.next());

等同于

代码语言:javascript
复制
for (Whatever x : c)
    whatEver(x);

不允许“更改顺序”。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1376934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档