美文网首页
Map根据Value排序

Map根据Value排序

作者: 田真的架构人生 | 来源:发表于2017-08-02 21:32 被阅读0次

    说到Map排序,大家第一时间想到的是,利用现成的TreeMap,它会自动根据Map的Key进行排序。
    但是如果要按照Map的Value进行排序呢?api没有提供现成的实现,只能自己实现了。有以下几个核心组件。
    1,Comparator
    要想自定义排序肯定少不了Comparator,在compare方法里面实现自己的排序逻辑,这里正是借用了Comparator。

    2,Map.Entry
    想对Map的Value排序,能抽取出相应数据结构吗?Map里面的数据结构其实是一个个的Entry,我们可以利用Map提供的api获取到整个Map的Entry的集合。

    3,Collections.sort(List, Comparator)
    有了Comparator,再将Map.Entry放进List,就可以利用Collections的sort对List里面的元素进行排序了。

    针对Entry实现自己的排序逻辑:

    private static class ValueComparator implements Comparator> {
            @Override
            public int compare(Entry entry1, Entry entry2) {
                return entry2.getValue() - entry1.getValue();
            }
        }
    

    测试:

    public static void main(String[] args) {
            Map map = new HashMap();
            map.put("a", 2);
            map.put("b", 4);
            map.put("c", 1);
            map.put("d", 5);
            map.put("e", 3);
    
            List> list = new ArrayList>();
            list.addAll(map.entrySet());
            Collections.sort(list, new ValueComparator());
    
            for (Map.Entry entry : list) {
                System.out.println(entry.getValue());
            }
        }
    

    结果:
    点击(此处)折叠或打开
    5
    4
    3
    2
    1

    相关文章

      网友评论

          本文标题:Map根据Value排序

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