java - 当我们在集合中使用 for-each 结构进行迭代时,元素的顺序是什么?
问题描述
当我们使用for each
构造迭代集合时,java 在每次迭代时从集合中选择每个元素的逻辑是什么,是随机的还是某种定义的排序?还是与自然排序有关?
for(Student student:students){
System.out.println(student);
}
解决方案
假设你的意思
for (Student student:students)
迭代顺序由Iterable
的类型的实现决定students
(除非students
是数组,在这种情况下,顺序是明确定义的)。
例子:
对于List
s,顺序是明确定义的。
对于 general Set
s 则不是(尽管有些Set
sTreeSet
确实有顺序)。
还是与自然排序相关的
有时是的。如果您正在迭代TreeSet
其元素类型 implements Comparable
,则顺序将是元素类型的自然顺序(假设您没有将Comparator
定义的不同顺序传递给TreeSet
的构造函数)。
推荐阅读
- gradle - 从运行时配置中排除的实现依赖性
- java - Apache Tomcat 8.5 池线程从未被杀死
- reactjs - 无法在文本框中输入 - React
- php - 如何在三重内连接表中显示适当的数据?
- ios - 自定义 UILongPressGestureRecognizer 无法使用 VoiceOver 的问题
- javascript - 我们能否在 oracle apex 中使全局页面上的区域不每次都加载(使其成为静态)。有没有办法限制它?
- reactjs - React Router v5 恢复滚动位置
- c# - 为什么在.Net C# 中从 MySql 读取后日期格式会发生变化?
- here-api - HERE API 直通航点
- python - Python 记录器忽略类中的 FileHandler 和 StreamHandler 级别