原文: https://beginnersbook.com/2014/07/how-to-sort-a-treemap-by-value-in-java/
TreeMap总是根据其键进行排序,但是如果你想根据它的值对它进行排序,那么你可以使用比较器来构建一个逻辑。下面是按值排序TreeMap的完整代码。
import java.util.*;class TreeMapDemo {//Method for sorting the TreeMap based on valuespublic static <K, V extends Comparable<V>> Map<K, V>sortByValues(final Map<K, V> map) {Comparator<K> valueComparator =new Comparator<K>() {public int compare(K k1, K k2) {int compare =map.get(k1).compareTo(map.get(k2));if (compare == 0)return 1;elsereturn compare;}};Map<K, V> sortedByValues =new TreeMap<K, V>(valueComparator);sortedByValues.putAll(map);return sortedByValues;}public static void main(String args[]) {TreeMap<String, String> treemap = new TreeMap<String, String>();// Put elements to the maptreemap.put("Key1", "Jack");treemap.put("Key2", "Rick");treemap.put("Key3", "Kate");treemap.put("Key4", "Tom");treemap.put("Key5", "Steve");// Calling the method sortByvaluesMap sortedMap = sortByValues(treemap);// Get a set of the entries on the sorted mapSet set = sortedMap.entrySet();// Get an iteratorIterator i = set.iterator();// Display elementswhile(i.hasNext()) {Map.Entry me = (Map.Entry)i.next();System.out.print(me.getKey() + ": ");System.out.println(me.getValue());}}}
输出:
Key1: JackKey3: KateKey2: RickKey5: SteveKey4: Tom
