Как отсортировать коллекцию из семейста Set?
Как отсортировать коллекцию по времени?
Здравствуйте! У меня возникли сложности с сортировкой. Я создала коллекцию: List<Airplane>.
Разделение строки на подстроки и добавление в коллекцию Set c типом Enum
Есть перечисление, где указаны роли безопасности. public enum Authority < ADMIN, Manager.
Отсортировать коллекцию
Нужно отсортировать объем двигателя (FUELCONSUMPTION ) по возрастающей public class Bentley.
Отсортировать коллекцию ArrayList
Есть коллекция ArrayList состоящая из разных дочерних объектов, необходимо отсортировать по.
4608 / 2438 / 869
Регистрация: 29.11.2010
Сообщений: 5,377
Сообщение было отмечено Dmitry Andreev как решение
Решение
Посмотрите на TreeSet. Его элементы можно получать в отсортированном виде.
Множества в Java хранят элементы в определенном порядке. Этот прядок контролируется реализацией, и интерфейс не содержит средств для его изменения.
Для абстрактного множества можно превратить его в список и отсортировать. Как-то так:
1 2 3 4
final SetString> strings = new HashSet<>(); // . final ListString> sortedStrings = new ArrayListString>(strings); Collections.sort(sortedStrings);
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Отсортировать коллекцию по возрастанию
Есть коллекция List<Furniture> furniture = new List<Furniture>(); в ней у меня есть поля name.
Отсортировать коллекцию по типу объектов
Ребят,нужна помощь. Есть абстрактный класс "покупки". От него наследуются классы "покупка со.

Отсортировать коллекцию, состоящую из экземпляров класса, по конкретному полю
Как отсортировать коллекцию, состоящую из экземпляров класса, по конкретному полю (через передачу.

Как отсортировать список по именам и как отсортировать дату рождения в обратном порядке
Добрый вечер. Получилось только вывести на экран список, вывести на экран отсортированный список.
milten15 / Сортировки правильные.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
| Если нужно отсортировать коллекцию , то применяйте метод Collections . sort (). |
| // Collections.sort(…) |
| List < ObjectName >list = new ArrayList < ObjectName >(); |
| Collections . sort ( list , new Comparator < ObjectName >() |
| public int compare ( ObjectName o1 , ObjectName o2 ) |
| return o1 . toString (). compareTo ( o2 . toString ()); |
| > |
| >); |
| Если требуется отсортировать массив , используйте метод Arrays . sort (). |
| // Arrays.sort(…) |
| ObjectName [] arr = new ObjectName [ 10 ]; |
| Arrays . sort ( arr , new Comparator < ObjectName >() |
| public int compare ( ObjectName o1 , ObjectName o2 ) |
| return o1 . toString (). compareTo ( o2 . toString ()); |
| > |
| >); |
| Метод sort () очень удобен , когда коллекция или массив уже заполнены значениями . |
| Применение самосортирующихся структур данных |
| Если нужно отсортировать список ( List ) или множество ( Set ), используйте структуру TreeSet для сортировки . |
| // TreeSet |
| Set < ObjectName >sortedSet = new TreeSet < ObjectName >( new Comparator < ObjectName >() |
| public int compare ( ObjectName o1 , ObjectName o2 ) |
| return o1 . toString (). compareTo ( o2 . toString ()); |
| > |
| >); |
| sortedSet . addAll ( unsortedSet ); |
| Если вам требуется отсортировать словарь ( Map ), используйте структуру TreeMap для сортировки . TreeMap сортируется по ключу ( key ). |
| // TreeMap – использующий String ключи и компаратор (Comparator) CASE_INSENSITIVE_ORDER, |
| // упорядочивающий строки (String) методом compareToIgnoreCase |
| Map < String , Integer >sortedMap = new TreeMap < String , Integer >( String . CASE_INSENSITIVE_ORDER ); |
| sortedMap . putAll ( unsortedMap ); |
| //TreeMap – общий случай, компаратор указывается вручную |
| Map < ObjectName , String >sortedMap = new TreeMap < ObjectName , String >( new Comparator < ObjectName >() |
| public int compare ( ObjectName o1 , ObjectName o2 ) |
| return o1 . toString (). compareTo ( o2 . toString ()); |
| > |
| >); |
| sortedMap . putAll ( unsortedMap ); |
Как отсортировать Set/Map?
Для Map можно привести ключи/значения к виду Collection, переложить в новый List и отсортировать с помощью Collections.sort . То же делается с Set . Этот метод конечно же неэффективный, так как потребует полного копирования содержимого.
Эффективный способ – хранить данные уже отсортированными. Для таких реализаций созданы интерфейсы-наследники SortedSet и SortedMap .
Реализации SortedSet дают линейный порядок множества. Элементы упорядочены по возрастанию. Порядок либо натуральный (элементы реализуют интерфейс Comparable ), либо его определяет переданный в конструктор Comparator .
Этот интерфейс добавляет методы получения подмножества от указанного элемента ( tailSet ), до элемента ( headSet ), и между двумя ( subSet ). Подмножество включает нижнюю границу, не включает верхнюю.
SortedSet расширяется интерфейсом NavigableSet для итерации по порядку, получения ближайшего снизу ( floor ), сверху ( ceiling ), большего ( higher ) и меньшего ( lower ) заданному элемента.
Все те же правила применяются к элементам SortedMap / NavigableMap относительно их ключей.
Основными реализациями являются TreeSet и TreeMap . Внутри это самобалансирующиеся красно-чёрные деревья. Их структура и способ балансировки – вопрос достойный отдельного поста. Другая любопытная реализация из java.util.concurrent – ConcurrentSkipListMap.
Подскажите пожалуйста, как отсортировать коллекцию set в обратном порядке и вывести? я положил лист в сет, а дальше не знаю(можно любой сет)
Если используется TreeSet , то для получения множества, отсортированного в обратном порядке, достаточно воспользоваться методом TreeSet::descendingSet , но нужно использовать конкретную реализацию при определении типа dig :
TreeSet dig = new TreeSet<>(numbers); System.out.println(dig.descendingSet()); // -> [999, 99, 9]
Если очень нужно получить сразу же сет в обратном порядке, следует использовать конструктор TreeSet(Comparator comparator) , а затем добавить все элементы коллекции при помощи addAll :
Set reverse = new TreeSet<>(Comparator.reverseOrder()); reverse.addAll(numbers); System.out.println(reverse); // -> [999, 99, 9]
