HashSet и вывод элементов в консоль

109
02 октября 2019, 18:10
 public static void main(String[] args) {
        HashSet<String> values = new HashSet<>();
        values.add("Ivan");
        values.add("Petr");
        values.add("Alexandr");
        values.add("Dmitriy");
        System.out.println(values);
    }

[Petr, Alexandr, Ivan, Dmitriy] вот что я получил в консоль.
Почему вышли значения таким образом, а не по порядку как в ArrayList например?

Answer 1

Как указано в документации

It makes no guarantees as to the iteration order of the set; in particular, it does not guarantee that the order will remain constant over time.

Не гарантируется порядок обхода набора; в частности, не гарантируется, что порядок будет всегда постоянным.

Убедиться можно на примере следующего кода:

public static void main(String[] args) {
    HashSet<String> values = new HashSet<>();
    values.add("Ivan");
    values.add("Petr");
    values.add("Alexandr");
    values.add("Dmitriy");
    System.out.println(values);
    values.add("Petr2");
    System.out.println(values);
    values.add("Ivan2");
    System.out.println(values);
}

Если его запустить, можно заметить, что порядок обхода может поменяться, например, после добавления элемента.

READ ALSO
Android: Как лучше отследить объекты?

Android: Как лучше отследить объекты?

Необходимо отследить перемещение одной белой точки на черном фонеИспользую OpenCV и класс CameraPreview на основе SurfaceView

112
Не работает алгоритм A*

Не работает алгоритм A*

Метод получает на вход координаты начальной точки и конечной

137
Ошибка java.lang.RuntimeException:&hellip;невозможно запустить действие

Ошибка java.lang.RuntimeException:…невозможно запустить действие

Создаю приложение с ЯндексКартами

103
Запуск exe файла и передача значений Java

Запуск exe файла и передача значений Java

Всем привет, вообщем столкнулся с такой проблемой

113