Дополнительно
Как отсортировать список ArrayList?
У меня есть список двоичных чисел в java, и я хочу отсортировать ArrayList в порядке убывания.
Входной ArrayList имеет следующий вид:
List<Double> testList = new ArrayList();
testList.add(0.5);
testList.add(0.2);
testList.add(0.9);
testList.add(0.1);
testList.add(0.1);
testList.add(0.1);
testList.add(0.54);
testList.add(0.71);
testList.add(0.71);
testList.add(0.71);
testList.add(0.92);
testList.add(0.12);
testList.add(0.65);
testList.add(0.34);
testList.add(0.62);
Выходные данные должны выглядеть следующим образом
0.92
0.9
0.71
0.71
0.71
0.65
0.62
0.54
0.5
0.34
0.2
0.12
0.1
0.1
0.1
334
18
Это сделает то, что вы хотите. Однако не забудьте импортировать
Collections
!Здесь документация по
коллекциям
.По убыванию:
Используйте метод util класса java.util.Collections, т.е.
На самом деле, если вы хотите отсортировать пользовательский объект, вы можете использовать
см. collections api
Для вашего примера, это будет делать чудеса в Java 8
Но если вы хотите сортировать по некоторые поля объекта, по которому выполняется сортировка, вы можете сделать это легко:
или
или
Источники: https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html
Используя лямбда-выражения (Java8), и обнажая его вниз, чтобы чуть-чуть синтаксис (JVM будет вывести много в этом случае), вы получаете:
Более подробная версия:
Использование лямбда-возможно потому, что интерфейс Comparator имеет только один метод для осуществления, так что ВМ может определить, какой метод реализации. Поскольку типы параметров могут быть выведены, они не'т должны быть указаны (т. е.(А, B)
вместо
(двойной, двойной б)`. И поскольку тела лямбда имеет только одну линию, и метод должен вернуть значение, "возврат" выводится и брекеты не'т необходимости.С Java8 есть способ сортировки по умолчанию на интерфейс список, который позволит вам упорядочить коллекцию, если вы предоставляете компаратор. Вы можете легко сортировать пример в вопрос следующим образом:
Примечание: аргументы в лямбде меняются местами, когда перешел в дубль.сравнить, чтобы убедиться в сортировке по убыванию
Вы можете использовать коллекции.сортировать(список)
сортировать
списокесли
списоксодержит
сопоставимых` элементов. В противном случае я бы рекомендовал вам реализовать этот интерфейс, как здесь:и конечно же предоставлять свои собственные реализации `метод compareto метод, как здесь:
Коллекции.сорт
позволяет передать экземпляр
компаратор, который определяет логику сортировки. Поэтому вместо того, чтобы сортировать список в алфавитном порядке, а затем перевернуть ее, можно просто пройти коллекций.reverseOrder (), чтобы
сортировка` для того, чтобы отсортировать список в обратном порядке:Как упомянул @Marco13, помимо того, что более идиоматические (и, возможно, более эффективным), используя обратный порядок компаратора гарантирует, что вроде как стабильно (это означает, что порядок элементов не изменяются, когда они равны по компаратору, а вспять изменит порядок)
если вы используете Java 8 ЮВ, то это может помочь.
|*| Сортировка списка :
|=> порядок сортировки возрастанию :
|=> порядок сортировки ДСК :
|*| Изменить порядок списка :
Вы можете сделать как этот:
Коллекция имеет компаратор по умолчанию, которые могут помочь вам с этим.
Также, если вы хотите использовать некоторые Java 8 новые функции, вы можете сделать так:
Вот небольшая шпаргалка, которая охватывает типичные случаи:
Вы можете использовать подобное
В Java 8 теперь его очень легко.
Например у меня есть класс Person: имя string, int и возраст ==>конструктор нового человека(имя,возраст)
Следующие строки должны сделать гуще
С коллекциях затмение можно создать примитивный двойной список, отсортировать его, а затем повернуть его вспять, чтобы положить ее в порядке убывания. Этот подход позволит избежать бокс в парном разряде.
Если вы хотите
список<двойной>
, то следующие будут работать.Если вы хотите оставить вид как ArrayList и Л;двойной>
, вы можете инициализировать и отсортировать список, используя
ArrayListIterate` служебный класс следующим образом:Примечание: Я являюсь активным участником коллекциях затмение.