Как отсортировать элементы HashSet в Java?

«Как отсортировать элементы HashSet в Java?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Основные способы:

  1. Преобразование в TreeSet: Автоматическая сортировка по natural ordering (требует, чтобы элементы реализовывали Comparable).

    HashSet<Integer> numberSet = new HashSet<>(Arrays.asList(5, 2, 8));
    Set<Integer> sortedSet = new TreeSet<>(numberSet); // [2, 5, 8]
  2. Преобразование в ArrayList и сортировка: Более гибкий способ, позволяющий использовать кастомные Comparator.

    HashSet<Integer> numberSet = new HashSet<>(Arrays.asList(5, 2, 8));
    List<Integer> sortedList = new ArrayList<>(numberSet);
    Collections.sort(sortedList); // Сортировка по возрастанию
    // Collections.sort(sortedList, Comparator.reverseOrder()); // По убыванию

Важно: Результатом является новая, отсортированная коллекция. Исходный HashSet остаётся неупорядоченным. Если требуется часто получать элементы в отсортированном виде, правильнее изначально использовать TreeSet.