Ответ
HashSet не гарантирует порядок элементов. Для сортировки его необходимо преобразовать в структуру данных, которая поддерживает упорядочивание.
Основные способы:
-
Преобразование в
TreeSet: Автоматическая сортировка по natural ordering (требует, чтобы элементы реализовывалиComparable).HashSet<Integer> numberSet = new HashSet<>(Arrays.asList(5, 2, 8)); Set<Integer> sortedSet = new TreeSet<>(numberSet); // [2, 5, 8] -
Преобразование в
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.