값을 기준으로 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!