>Java >java지도 시간 >Java에서 값을 기준으로 TreeMap을 어떻게 정렬할 수 있나요?

Java에서 값을 기준으로 TreeMap을 어떻게 정렬할 수 있나요?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-21 16:16:12203검색

How Can I Sort a TreeMap by its Values in Java?

값을 기준으로 TreeMap 정렬

소개:

TreeMap에서는 요소가 정렬됩니다. 구현에 따라 키 또는 값이 될 수 있는 자연스러운 순서를 기반으로 합니다. 그러나 비교기를 사용하여 항목 값을 기준으로 TreeMap을 정렬할 수 있습니다.

해결책:

값을 기준으로 TreeMap을 직접 정렬할 수는 없습니다. byValue 비교기로 시도한 구문이 올바르지 않습니다.

그러나 TreeMap의 항목이 포함된 사용자 정의 SortedSet을 생성하여 원하는 기능을 얻을 수 있습니다. 이 SortedSet는 항목SortedByValues() 메서드를 사용하여 생성할 수 있습니다.

static <K,V extends Comparable<? super V>>
SortedSet<Map.Entry<K,V>> entriesSortedByValues(Map<K,V> map) {
    SortedSet<Map.Entry<K,V>> sortedEntries = new TreeSet<>(
        new Comparator<Map.Entry<K,V>>() {
            @Override public int compare(Map.Entry<K,V> e1, Map.Entry<K,V> e2) {
                int res = e1.getValue().compareTo(e2.getValue());
                return res != 0 ? res : 1;
            }
        }
    );
    sortedEntries.addAll(map.entrySet());
    return sortedEntries;
}

이 메서드는 값이 Comparable인 Map을 가져와 항목 값으로 정렬된 Map.Entry의 SortedSet을 반환합니다.

이 방법을 사용하려면:

Map<String, Integer> map = new TreeMap<>();
map.put("A", 3);
map.put("B", 2);
map.put("C", 1); 

System.out.println(map); // prints "{A=3, B=2, C=1}"

SortedSet<Map.Entry<String,Integer>> sortedEntries = entriesSortedByValues(map);
System.out.println(sortedEntries); // prints "[C=1, B=2, A=3]"

정수에 대한 참고 사항 같음:

==를 사용하여 정수 값을 비교할 때 값 같음이 아닌 참조 같음을 확인합니다. 정수 값이 같은지 비교하려면 equals() 메서드를 사용하는 것이 좋습니다.

위 내용은 Java에서 값을 기준으로 TreeMap을 어떻게 정렬할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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