"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 특정 필드를 기준으로 Java 컬렉션을 정렬하는 방법은 무엇입니까?

특정 필드를 기준으로 Java 컬렉션을 정렬하는 방법은 무엇입니까?

2024-11-09에 게시됨
검색:494

How to Sort a Java Collection by a Specific Field?

특정 필드를 기준으로 Java 컬렉션 사용자 정의 정렬

Java에서 일반적인 작업은 사용자 정의 기준에 따라 컬렉션의 데이터를 구성하는 것입니다. id 필드가 있는 개체 컬렉션이 있고 해당 필드를 기준으로 정렬하려고 한다고 가정합니다.

이를 달성하기 위해 비교기를 사용하여 정렬 논리를 지정할 수 있습니다. 방법은 다음과 같습니다.

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

class CustomObject implements Comparable {
    private int id;
    
    public int getId() { return id; }
    
    @Override
    public int compareTo(CustomObject other) {
        return this.id - other.id;
    }
}

public class CustomCollectionSorting {

    public static void main(String[] args) {
        // Initialize the list of CustomObject
        List list = new ArrayList();
        list.add(new CustomObject(3));
        list.add(new CustomObject(5));
        list.add(new CustomObject(1));
        list.add(new CustomObject(2));

        // Create a comparator
        Comparator comparator = new Comparator() {
            @Override
            public int compare(CustomObject left, CustomObject right) {
                return left.getId() - right.getId();
            }
        };
        
        // Sort the collection
        Collections.sort(list, comparator);

        // Display the sorted list
        System.out.println(list);
    }
}

비교기를 사용하면 정렬 논리를 정의할 때 최대한의 유연성을 얻을 수 있습니다. 또는 CustomObject가 Comparable을 구현하는 경우 더 간단한 Collections.sort(list) 메서드를 사용할 수 있습니다.

Java 8을 사용하면 컬렉션 정렬이 훨씬 더 쉬워집니다.

list.sort((left, right) -> left.getId() - right.getId());
list.sort(Comparator.comparing(CustomObject::getId));

이 예제에서는 특정 필드를 기반으로 Java 컬렉션을 정렬하는 방법을 보여 주며, 이를 통해 특정 요구 사항에 따라 데이터를 더 쉽게 구성하고 조작할 수 있습니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3