import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
public class SortMapByValue {
public static void main(String[] args) {
HashMap<String, Integer> hm = new HashMap<>();
hm.put("AAA", 20);
hm.put("BBB", 60);
hm.put("ccc", null);
hm.put("eee", 10);
hm.put("fff", null);
List<Map.Entry<String, Integer>> list = new ArrayList<>(hm.entrySet());
list.sort((o1,o2) -> {
if(o1.getValue() == null) {
return -1;
}
if(o2.getValue() == null) {
return 1;
}
return o1.getValue().compareTo(o2.getValue());
});
System.out.println(list);//将排好序的list打印一遍
LinkedHashMap<String, Integer> map = new LinkedHashMap<>();
list.forEach(one -> map.put(one.getKey(), one.getValue()));
System.out.println(map);//将最终以value排好序的map打印一遍
}