已知一个 HashMap<Integer,User>集合, User 有 name(String)和 age(int)属性。请写一个方法实现对
HashMap 的排序功能,该方法接收 HashMap<Integer,User>为形参,返回类型为 HashMap<Integer,User>,
要求对 HashMap 中的 User 的 age 倒序进行排序。排序时 key=value 键值对不得拆散。
package com.ssh.action;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map.Entry;
import java.util.Set;
import com.ssh.entity.user;
public class a {
public static void main(String[] args) {
HashMap<Integer, user> ss=new HashMap<Integer, user>();
ss.put(1, new user("s", 23));
ss.put(2, new user("ss", 15));
ss.put(3, new user("sss", 35));
System.out.println(ss);
//{1=user [name=s, age=23], 2=user [name=ss, age=15], 3=user [name=sss, age=35]}
HashMap<Integer, user> hashMap = dd(ss);
System.out.println(hashMap);
//{3=user [name=sss, age=35], 1=user [name=s, age=23], 2=user [name=ss, age=15]}
}
public static HashMap<Integer, user> dd(HashMap<Integer, user> map){
//拿到集合
Set<Entry<Integer, user>> set=map.entrySet();
//方便排序
List<Entry<Integer, user>>list=new ArrayList<Entry<Integer,user>>(set);
// 使用Collections集合工具类对list进行排序,排序规则使用匿名内部类来实现
Collections.sort(list,new Comparator<Entry<Integer, user>>() {
public int compare(Entry<Integer, user> o1, Entry<Integer, user> o2) {
// TODO Auto-generated method stub
//降序
return o2.getValue().getAge()-o1.getValue().getAge();
}
});
//保存排序后的集合
LinkedHashMap<Integer, user> linkedHashMap= new LinkedHashMap<Integer, user>();
for (Entry<Integer, user> entry : list) {
linkedHashMap.put(entry.getKey(), entry.getValue());
}
return linkedHashMap;
}
}
package com.ssh.entity;
public class user {
public String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public user(String name, Integer age) {
super();
this.name = name;
this.age = age;
}
public user() {
super();
}
@Override
public String toString() {
return "user [name=" + name + ", age=" + age + "]";
}
}