Map集合实现排序功能

public class Map {

public static void main(String[] args) {
    /**
     * 集合中有字段integer,user;User 有name和age属性;
     * 实现排序功能
     *
     */
    HashMap<Integer, User> user = new HashMap();
    user.put(1, new User("张三", 25));
    user.put(3, new User("李四", 22));
    user.put(2, new User("王五", 28));
    System.out.println("origin: "+user);
    System.out.println("------------------------------------");
    //算法实现
    HashMap<Integer, User> sortHashMap = sortHashMap(user);
    System.out.println("success: "+sortHashMap);
}
private static HashMap<Integer, User> sortHashMap(HashMap<Integer, User> map) {
    //首先拿到map集合的键值对集合
    Set<java.util.Map.Entry<Integer, User>> entrySet = map.entrySet();
    //将set集合转为list集合,为了使用工具类方法
    ArrayList<java.util.Map.Entry<Integer, User>> list = new ArrayList<java.util.Map.Entry<Integer, User>>(entrySet);
    //使用Collection工具类排序(匿名内部类)
    Collections.sort(list, new Comparator<java.util.Map.Entry<Integer, User>>() {
        public int compare(java.util.Map.Entry<Integer, User> o1, java.util.Map.Entry<Integer, User> o2) {
            // 按照要求根据 User 的 age 的倒序进行排
            return o2.getValue().getAge()-o1.getValue().getAge();
        }
    });
    //创建一个新的有序map集合
    LinkedHashMap<Integer, User> linkedHashMap = new LinkedHashMap<Integer, User>();
    for (java.util.Map.Entry<Integer, User> entry : list) {
        linkedHashMap.put(entry.getKey(),entry.getValue());
    }
    return linkedHashMap;
}

}

猜你喜欢

转载自blog.csdn.net/weixin_45029766/article/details/102572058
今日推荐