一、LinkedHashMap是有序的,但是只有两种顺序:插入顺序和最近最少访问顺序(默认插入顺序),TreeMap是有序的,默认升序顺序,HashMap是无序的
二、如果你想自定义Map的排序的话,你需要借助Comparator的帮助
1.所有的Map集合都是用的方式
Map<String,Integer> map = new HashMap<>();
map.put("key1",1);
map.put("key2",2);
map.put("key3",3);
List<Map.Entry<String,Integer>> list = new ArrayList<>(map.entrySet());
Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
@Override
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
return o2.getValue().compareTo(o1.getValue());
}
});
2.Tree还有另外一种实现方式
class MyComparator implements Comparator
{
public int compare(Object o1,Object o2)
{
return o2.getValue().compareTo(o1.getValue());
}
}
public static void main(String[] args) {
Map<String,Integer> map = new TreeMap<>(new MyComparator());
map.put("key1",1);
map.put("key2",2);
map.put("key3",3);
}