已知一个 HashMap<Integer,User>集合, User 有 name(String)和 age(int)属性。请写一个方法实现对HashMap 的排序功能,该方法接收 HashMap<Integer,User>为形参,返回类型为 HashMap<Integer,User>,要求对 HashMap 中的 User 的 age 倒序进行排序。排序时 key=value 键值对不得拆散。
public class TestHashMap {
public static void main(String[] args) {
HashMap<Integer, User> hashmap = new HashMap<>();
hashmap.put(1, new User("zhangsan", 20));
hashmap.put(2, new User("lisi", 18));
hashmap.put(3, new User("wangwu", 21));
HashMap<Integer, User> map2 = sortHashMap(hashmap);
map2.forEach((key, value) -> {
System.out.println(key + "\t" + value);
});
}
private static HashMap<Integer, User> sortHashMap(HashMap<Integer, User> hashmap) {
Set<Entry<Integer, User>> entrySet = hashmap.entrySet();
ArrayList<Entry<Integer, User>> arrayList = new ArrayList<>(entrySet);
Collections.sort(arrayList, new Comparator<Entry<Integer, User>>() {
@Override
public int compare(Entry<Integer, User> o1, Entry<Integer, User> o2) {
return o2.getValue().getAge() - o1.getValue().getAge();
}
});
HashMap<Integer, User> linkedmap = new LinkedHashMap<>();
for (Entry<Integer, User> entry : arrayList) {
linkedmap.put(entry.getKey(), entry.getValue());
}
return linkedmap;
}
}