Java 当我们迭代使用集合中的每个构造时,元素的顺序是什么?
当我们使用for each构造迭代集合时,java在每次迭代时从集合中选取每个元素的逻辑是什么,是随机的还是某种定义的排序?还是与自然秩序有关 假设你是说Java 当我们迭代使用集合中的每个构造时,元素的顺序是什么?,java,collections,foreach,Java,Collections,Foreach,当我们使用for each构造迭代集合时,java在每次迭代时从集合中选取每个元素的逻辑是什么,是随机的还是某种定义的排序?还是与自然秩序有关 假设你是说 for (Student student:students) 迭代顺序由Iterable对Student类型的实现决定,除非Student是数组,在这种情况下,顺序定义得很好 示例: 对于列表,顺序定义得很好 对于一般的集合,尽管某些集合(如TreeSet)确实有顺序,但情况并非如此 还是与自然秩序有关 有时是这样。如果您在元素类型实现Co
for (Student student:students)
迭代顺序由Iterable对Student类型的实现决定,除非Student是数组,在这种情况下,顺序定义得很好
示例:
对于列表,顺序定义得很好
对于一般的集合,尽管某些集合(如TreeSet)确实有顺序,但情况并非如此
还是与自然秩序有关
有时是这样。如果您在元素类型实现Compariable的树集上迭代,则该顺序将是元素类型的自然顺序,假设您没有将定义不同顺序的比较器传递给树集的构造函数。假设您的意思是
for (Student student:students)
迭代顺序由Iterable对Student类型的实现决定,除非Student是数组,在这种情况下,顺序定义得很好
示例:
对于列表,顺序定义得很好
对于一般的集合,尽管某些集合(如TreeSet)确实有顺序,但情况并非如此
还是与自然秩序有关
有时是这样。如果您在元素类型实现Comparable的树集上迭代,则该顺序将是元素类型的自然顺序,前提是您没有将定义不同顺序的比较器传递给树集的构造函数。这取决于您使用的集合类型
for(Student student:students){
System.out.println(student.toString());
}
相当于
for (Iterator<String> i = students.iterator(); i.hasNext();)
{
Student student= i.next();
System.out.println(student.toString());
}
i、 next获取下一个student对象,其下一个方法实现基于集合类型
它可能与内存中的顺序相同
阅读更多信息:这取决于您使用的收藏类型
for(Student student:students){
System.out.println(student.toString());
}
相当于
for (Iterator<String> i = students.iterator(); i.hasNext();)
{
Student student= i.next();
System.out.println(student.toString());
}
i、 next获取下一个student对象,其下一个方法实现基于集合类型
它可能与内存中的顺序相同
阅读更多信息:取决于收藏情况。如果是列表,则是插入顺序。学生是什么类型的集合?这个循环使用集合的Iterable性质,它使用它的底层迭代器,所以它完全取决于迭代器是如何为给定集合实现的。e、 g代表名单:真的取决于收藏。如果是列表,则是插入顺序。学生是什么类型的集合?这个循环使用集合的Iterable性质,它使用它的底层迭代器,所以它完全取决于迭代器是如何为给定集合实现的。e、 g名单: