Ответ
Да, может, если использовать конкретную реализацию Set, которая обеспечивает эти свойства.
- HashSet: Не гарантирует никакого порядка (ни порядка вставки, ни сортировки).
- LinkedHashSet: Сохраняет порядок вставки элементов. Он упорядоченный, но не отсортированный по значению.
- TreeSet: Элементы автоматически сортируются согласно их естественному порядку (
Comparable) или переданному компаратору (Comparator).TreeSetявляется и отсортированным, и упорядоченным (порядок определяется сортировкой).
Пример с TreeSet:
Set<Integer> numbers = new TreeSet<>();
numbers.add(10);
numbers.add(1);
numbers.add(5);
System.out.println(numbers); // Вывод: [1, 5, 10] - отсортировано по возрастанию.
// TreeSet с кастомным компаратором (обратная сортировка)
Set<String> reversedNames = new TreeSet<>(Comparator.reverseOrder());
reversedNames.add("Alice");
reversedNames.add("Bob");
reversedNames.add("Charlie");
System.out.println(reversedNames); // Вывод: [Charlie, Bob, Alice]
Таким образом, TreeSet — это реализация Set, которая одновременно является и отсортированной, и упорядоченной.