>  기사  >  Java  >  Java에서 여러 속성을 기준으로 개체 목록을 정렬하는 방법은 무엇입니까?

Java에서 여러 속성을 기준으로 개체 목록을 정렬하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-20 16:23:13306검색

How to Sort a List of Objects by Multiple Properties in Java?

Java에서 여러 속성별로 개체 목록 정렬

Java에서 속성별로 개체 목록을 정렬하려면 비교기를 사용해야 합니다. 다음 예를 고려하십시오.

public class ActiveAlarm {
    public long timeStarted;
    public long timeEnded;
    // ... other fields
}

timeStarted 및 timeEnded를 기준으로 ActiveAlarm 객체 목록을 오름차순으로 정렬하려면 중첩 비교기를 사용할 수 있습니다.

List<ActiveAlarm> alarms = ...;

Comparator<ActiveAlarm> comparator =
    Comparator.comparing(alarm -> alarm.timeStarted)
              .thenComparing(alarm -> alarm.timeEnded);

Collections.sort(alarms, comparator);

사용 Java 8 람다 표현식

Java 8에서는 비교기를 나타내는 간결한 방법을 제공하는 람다 표현식을 도입했습니다.

Comparator<ActiveAlarm> comparator =
    (alarm1, alarm2) -> {
        int result = Long.compare(alarm1.timeStarted, alarm2.timeStarted);
        if (result == 0) {
            result = Long.compare(alarm1.timeEnded, alarm2.timeEnded);
        }
        return result;
    };

대체 정렬 방법

또는 속성에 직접 액세스하는 사용자 정의 비교기 구현을 사용할 수 있습니다.

Comparator<ActiveAlarm> comparator = new Comparator<ActiveAlarm>() {
    @Override
    public int compare(ActiveAlarm o1, ActiveAlarm o2) {
        int result = Long.compare(o1.timeStarted, o2.timeStarted);
        if (result == 0) {
            result = Long.compare(o1.timeEnded, o2.timeEnded);
        }
        return result;
    }
};

비교기를 사용하면 속성 조합과 순서에 따라 개체 목록을 쉽게 정렬할 수 있습니다.

위 내용은 Java에서 여러 속성을 기준으로 개체 목록을 정렬하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.