首页javamapJava Collection - 如何按值排序HashMap

Java Collection - 如何按值排序HashMap

我们想知道如何按值排序HashMap。
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

class MyComparator implements Comparator<Entry<String, Integer>> {
  public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
    return o1.getValue().compareTo(o2.getValue());
  }
}

class Util {
  public static Map<String, Integer> sortByComparator(
      Map<String, Integer> unsortMap) {

    List<Entry<String, Integer>> list = new LinkedList<Entry<String, Integer>>(
        unsortMap.entrySet());

    Collections.sort(list, new MyComparator());

    Map<String, Integer> sortedMap = new LinkedHashMap<String, Integer>();
    for (Entry<String, Integer> entry : list) {
      sortedMap.put(entry.getKey(), entry.getValue());
    }
    return sortedMap;
  }
}

public class Main {

  public static void main(String[] args) {
    Map<String, Integer> unsortMap = new HashMap<String, Integer>();
    unsortMap.put("B", 5);
    unsortMap.put("A", 8);
    unsortMap.put("D", 2);
    unsortMap.put("C", 7);

    System.out.println("Before sorting......");
    System.out.println(unsortMap);

    Map<String, Integer> sortedMapAsc = Util.sortByComparator(unsortMap);
    System.out.println(sortedMapAsc);
  }
}