Каков порядок элементов при итерации с использованием конструкции for-each в коллекциях? - PullRequest
0 голосов
/ 16 ноября 2018

Когда мы выполняем итерации коллекций, используя конструкцию for each, какую логику использует Java для выбора каждого элемента из коллекции на каждой итерации, это случайный или какой-то определенный вид сортировки? Или это связано с естественным порядком ?

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

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Это зависит от типа коллекции, которую вы используете

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() получает следующий объект ученика, а его реализация (метод next()) основана на типе коллекции.

Может быть в том же порядке, что и в памяти.

Подробнее: https://javarevisited.blogspot.com/2016/02/how-does-enhanced-for-loop-works-in-java.html#ixzz5X0Wf0Eak

0 голосов
/ 16 ноября 2018

Предполагая, что вы имели в виду

for (Student student:students)

, порядок итераций определяется реализацией Iterable типа students (если students не является массивом, в этом случае порядокчетко определены).

Примеры:

Для List s порядок четко определен.

Для общих Set s это не так (хотя некоторые Set s, такие как TreeSet имеют порядок).

или это то, что связано с естественным порядком

Иногда это так.Если вы выполняете итерацию по TreeSet, тип элемента которого реализует Comparable, порядок будет естественным упорядочением типа элемента (при условии, что вы не передали Comparator, определяющий другое упорядочение для TreeSet).конструктор).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...