按键排序
可以直接使用TreeMap(默认按照键的升序)
Map<Integer, Person> map = new HashMap<Integer, Person>();
TreeMap treemap = new TreeMap(map);
按值排序
假设已知一个HashMap<Integer,Person>集合, Person有username(String)和 age(int)属性,现在要按照Person的年龄对这个HashMap进行排序。
HashMap<Integer,Person> hashMap = new HashMap<>();
hashMap.put(2,new Person("111",20));
hashMap.put(1,new Person("222",40));
hashMap.put(3,new Person("333",10));
hashMap.put(5,new Person("444",30));
hashMap.put(6,new Person("555",2));
//拿到map的键值对集合
Set<Map.Entry<Integer,Person>> set = hashMap.entrySet();
//将这个set集合转为list集合为了使用工具类的排序方法
List<Map.Entry<Integer,Person>> list = new ArrayList<>(set);
//排序
Collections.sort(list, new Comparator<Map.Entry<Integer, Person>>() {
@Override
public int compare(Map.Entry<Integer, Person> o1, Map.Entry<Integer, Person> o2) {
return o2.getValue().getAge()-o1.getValue().getAge(); //降序排序,如果要升序就用前面减后面
}
}
);
//重新装入LinkedHashMap中
LinkedHashMap<Integer,Person> linkedHashMap = new LinkedHashMap<>();
for (Map.Entry<Integer,Person> entry:list ) {
linkedHashMap.put(entry.getKey(),entry.getValue());
}