웹사이트 검색

Java에서 목록을 정렬하는 방법


때로는 요소를 처리하기 전에 Java에서 목록을 정렬해야 합니다. 이 자습서에서는 목록을 자연스러운 순서로 정렬하는 방법을 배웁니다. 우리는 또한 객체 목록을 정렬하기 위해 자체 Comparator 구현을 사용하는 방법을 배웁니다. Java 목록은 목록의 길이가 동적이며 LinkedList 등으로 제공된다는 점을 제외하면 배열과 유사합니다.

자바 정렬 목록

여기에서는 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}]

Comparator를 사용하여 Java에서 목록 정렬

Collections.sort() 메서드는 오버로드되며 자체 람다 식을 제공하여 구현을 한 줄로 작성할 수도 있습니다.

Collections.sort(dl, (d1, d2) -> {
	return d2.getId() - d1.getId();
});
System.out.println("Reverse Sorted List using Comparator::" + dl);

산출:

요약

컬렉션 클래스 sort() 메서드는 Java에서 목록을 정렬하는 데 사용됩니다. 목록 요소가 Comparable 인터페이스를 구현해야 하는 자연 순서로 목록을 정렬할 수 있습니다. 정렬 규칙을 정의하기 위해 Comparator 구현을 전달할 수도 있습니다.

GitHub 리포지토리에서 더 많은 예제를 확인할 수 있습니다.

참조: API 문서