首页 > 解决方案 > 当我们在集合中使用 for-each 结构进行迭代时,元素的顺序是什么?

问题描述

当我们使用for each构造迭代集合时,java 在每次迭代时从集合中选择每个元素的逻辑是什么,是随机的还是某种定义的排序?还是与自然排序有关?

for(Student student:students){
  System.out.println(student);
}

标签: javacollectionsforeach

解决方案


假设你的意思

for (Student student:students)

迭代顺序由Iterable的类型的实现决定students(除非students是数组,在这种情况下,顺序是明确定义的)。

例子:

对于Lists,顺序是明确定义的。

对于 general Sets 则不是(尽管有些SetsTreeSet确实有顺序)。

还是与自然排序相关的

有时是的。如果您正在迭代TreeSet其元素类型 implements Comparable,则顺序将是元素类型的自然顺序(假设您没有将Comparator定义的不同顺序传递给TreeSet的构造函数)。


推荐阅读