Поиск по сайту:

Как отсортировать список в 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