Автор оригинала: Pankaj Kumar.
Иногда нам приходится сортировать список на Java перед обработкой его элементов. В этом уроке мы узнаем, как сортировать список в естественном порядке. Мы также узнаем, как использовать вашу собственную реализацию компаратора для сортировки списка объектов.
Список Java похож на массивы, за исключением того, что длина списка является динамической и он поставляется в рамках коллекции Java . На самом деле, List-это интерфейс, и большую часть времени мы используем одну из его реализаций, такую как ArrayList или LinkedList и т. Д.
Список сортировки Java
Здесь мы узнаем, как сортировать список объектов в Java. Мы можем использовать метод Collections.sort() для сортировки списка в естественном порядке возрастания. Все элементы в списке должны реализовывать Сопоставимый интерфейс, в противном случае будет выдано исключение IllegalArgumentException
.
Давайте рассмотрим краткий пример сортировки списка строк.
package com.journaldev.sort; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class JavaListSort { /** * This class shows how to sort ArrayList in java * @param args */ public static void main(String[] args) { ListstrList = new ArrayList (); strList.add("A"); strList.add("C"); strList.add("B"); strList.add("Z"); strList.add("E"); //using Collections.sort() to sort ArrayList Collections.sort(strList); for(String str: strList) System.out.print(" "+str); } }
Как вы можете видеть, мы используем метод Collections.sort() для сортировки списка строк. Класс String реализует Сопоставимый интерфейс.
Выход:
Java Сортирует список объектов
Давайте рассмотрим другой пример, в котором мы будем сортировать список пользовательских объектов. Обратите внимание, что класс должен реализовывать сопоставимый интерфейс.
package com.journaldev.sort; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class JavaSortListObject { public static void main(String[] args) { List dl = new ArrayList<>(); dl.add(new Data(2)); dl.add(new Data(3)); dl.add(new Data(1)); System.out.println("Original List::"+dl); Collections.sort(dl); System.out.println("Naturally Sorted List::"+dl); } } class Data implements Comparable { private int id; public Data(int i) { this.id = i; } @Override public int compareTo(Data d) { return this.id - d.getId(); } public int getId() { return id; } @Override public String toString() { return "Data{"+this.id+"}"; } }
Выход:
Original List::[Data{2}, Data{3}, Data{1}] Naturally Sorted List::[Data{1}, Data{2}, Data{3}]
Сортировка списка на Java с помощью компаратора
Метод Collections.sort() перегружен, и мы также можем предоставить нашу собственную реализацию компаратора для правил сортировки.
Поскольку Comparator является функциональным интерфейсом , мы можем использовать лямбда-выражения для записи его реализации в одной строке.
Collections.sort(dl, (d1, d2) -> { return d2.getId() - d1.getId(); }); System.out.println("Reverse Sorted List using Comparator::" + dl);
Выход:
Объекты Списка Сортировки Java – Компаратор
Резюме
Метод сортировки класса коллекций() используется для сортировки списка в Java. Мы можем отсортировать список в естественном порядке, где элементы списка должны реализовывать сопоставимый интерфейс. Мы также можем передать реализацию компаратора для определения правил сортировки.
Ссылка: API Doc