美文网首页
HashMap排序

HashMap排序

作者: 大大哟nice | 来源:发表于2019-06-12 21:45 被阅读0次

已知一个 HashMap<Integer,User>集合, User 有 name(String)和 age(int)属性。请写一个方法实现对HashMap 的排序功能,该方法接收 HashMap<Integer,User>为形参,返回类型为 HashMap<Integer,User>,要求对 HashMap 中的 User 的 age 倒序进行排序。排序时 key=value 键值对不得拆散。

public static void main(String[] args) {
        //对HashMap集合进行排序,HashMap是无序的
        HashMap<Integer, User> map = new HashMap<Integer, User>();
        
        map.put(1, new User("tom",30));
        map.put(2, new User("regan",13));
        map.put(3, new User("ALEX",14));
        map.put(4, new User("GG",8));
        
        System.out.println(map);
        
        map =sort(map);
         System.out.println(map);
        
    }
    /**
     * 对HashMap进行排序
     * @param map
     * @return 
     */
    public static LinkedHashMap<Integer,User> sort(HashMap<Integer,User> map) {
        //将HashMap对象转换为set集合
        Set<Entry<Integer,User>> entrySet = map.entrySet();
        //将set 集合对象变成arraylist集合
        ArrayList<Entry<Integer, User>> list =  new ArrayList<Entry<Integer,User>>();
                for (Entry<Integer, User> entry : entrySet) {
            list.add(entry);
        }
        
        //对list集合进行排序,采用collections提供的sort 方法
        Collections.sort(list, new Comparator<Entry<Integer,User>>() {

            @Override
            public int compare(Entry<Integer, User> o1, Entry<Integer, User> o2) {
                return o2.getValue().getAge()-o1.getValue().getAge();
            }
            
        });
        
        LinkedHashMap<Integer, User> map2 = new LinkedHashMap<Integer, User>();
        
        for(Entry<Integer, User> entry : list) {
            map2.put(entry.getKey(), entry.getValue());
        }
        return  map2;
        
    }

输出结果:

{1=User [name=tom, age=30], 2=User [name=regan, age=13], 3=User [name=ALEX, age=14], 4=User [name=GG, age=8]}
{1=User [name=tom, age=30], 3=User [name=ALEX, age=14], 2=User [name=regan, age=13], 4=User [name=GG, age=8]}

参考文章
图解LinkedHashMap原理

相关文章

  • HashMap排序

    已知一个 HashMap 集合, User 有 name(String)和 age(int)属性。请写一个方法实现...

  • 【恋上数据结构与算法二】(一)排序(Sorting)

    排序方法 冒泡排序 选择排序 堆排序 插入排序 归并排序 快速排序 希尔排序 计数排序 基数排序 桶排序 初识排序...

  • 排序-冒泡排序

    排序系列传递门 排序—选择排序排序—快速排序排序—插入排序排序-希尔排序(待完善)排序—归并排序(待完善)排序—基...

  • 排序

    冒泡排序: 冒泡排序 选择排序: 插入排序: 希尔排序: 归并排序: 快速排序: 堆排序: 计数排序: 桶排序: ...

  • Java | 10种排序算法

    冒泡排序 选择排序 插入排序 希尔排序 计数排序 基数排序 堆排序 归并排序 快速排序 桶排序

  • 常见的排序

    冒泡排序: 选择排序: 插入排序: 快速排序: 希尔排序: 归并排序: 堆排序: 计数排序: 桶排序: 基数排序:

  • 002--20200409刷题

    冒泡排序 选择排序 插入排序 希尔排序 归并排序 快速排序 堆排序 计数排序 桶排序 基数排序

  • 排序

    排序 符号:Θ 插入排序 选择排序 堆排序 归并排序 冒泡排序 快速排序 桶排序 基数排序 计数排序 插入排序 插...

  • 排序 -- 选择/插入

    聊聊排序吧 冒泡排序 选择排序 插入排序 快速排序 归并排序 计数排序 桶排序 堆排序 本篇 选择排序与插入排序 ...

  • 前端基础整理 | 算法基础

    排序算法 冒泡排序 选择排序 插入排序 希尔排序 归并排序 堆排序 快速排序

网友评论

      本文标题:HashMap排序

      本文链接:https://www.haomeiwen.com/subject/ozdrfctx.html