Как отсортировать список в Java
Иногда нам приходится сортировать список в Java перед обработкой его элементов. В этом уроке мы научимся сортировать список в естественном порядке. Мы также узнаем, как использовать нашу собственную реализацию Comparator для сортировки списка объектов. Список Java похож на массивы, за исключением того, что длина списка является динамической и входит в LinkedList и т. д.
Список сортировки Java
Здесь мы узнаем, как сортировать список объектов в Java. Мы можем использовать метод Collections.sort() для сортировки списка в естественном порядке возрастания. Все элементы в списке должны реализовывать интерфейс Comparable, в противном случае генерируется 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) {
List<String> strList = new ArrayList<String>();
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 реализует интерфейс Comparable. Выход:
Список сортировки объектов Java
Давайте посмотрим на другой пример, где мы будем сортировать список пользовательских объектов. Обратите внимание, что класс должен реализовывать интерфейс Comparable.
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<Data> 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<Data> {
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() перегружен, и мы также можем предоставить собственные лямбда-выражения, чтобы написать его реализацию в одной строке.
Collections.sort(dl, (d1, d2) -> {
return d2.getId() - d1.getId();
});
System.out.println("Reverse Sorted List using Comparator::" + dl);
Выход:
Резюме
Метод sort() класса Collections используется для сортировки списка в Java. Мы можем отсортировать список в естественном порядке, где элементы списка должны реализовывать интерфейс Comparable. Мы также можем передать реализацию Comparator для определения правил сортировки.
Вы можете проверить больше примеров из нашего репозитория GitHub.
Ссылка: документ API