代码之家  ›  专栏  ›  技术社区  ›  The Scientific Method

当我们为集合中的每个构造迭代使用时,元素的顺序是什么?

  •  1
  • The Scientific Method  · 技术社区  · 6 年前

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

    for(Student student:students){
      System.out.println(student);
    }
    
    2 回复  |  直到 6 年前
        1
  •  3
  •   Eran    6 年前

    假设你的意思是

    for (Student student:students)
    

    迭代顺序由 Iterable students (除非

    示例:

    为了 List

    一般 Set 不是的(尽管有些 TreeSet 有秩序)。

    或是与自然秩序有关

    有时候是的。如果你在 有序树 Comparable Comparator 定义不同的顺序 的构造函数)。

        2
  •  2
  •   suraj13k    6 年前

    它基于您使用的收藏类型

    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对象及其( next() 方法)实现基于集合类型。

    它可能与内存中的顺序相同。

    阅读更多: https://javarevisited.blogspot.com/2016/02/how-does-enhanced-for-loop-works-in-java.html#ixzz5X0Wf0Eak