java8中对Map集合排序

java8中对Map集合排序,利用Stream函数,结合lamda表达式方便操作

  public static void main(String[] args)
    {
        //在java8中,利用lamda表达式对map进行排序
        HashMap<Integer,Integer>  map =  new HashMap<Integer,Integer>();
        map.put(8,2);
        map.put(5,6);
        map.put(6,5);
        map.put(3,7);
        map.put(4,8);
        map.put(7,3);
        map.put(2,1);
        map.put(1,4);
        map.forEach((k, v) -> System.out.println("原始Map数据:"+"key:value = " + k + ":" + v));
        //按key值升序排列
        HashMap<Integer, Integer> result0 = map.entrySet().stream()
                .sorted(Map.Entry.comparingByKey())
                .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,
                        (oldValue, newValue) -> oldValue, LinkedHashMap::new));
        result0.forEach((k, v) -> System.out.println("按key升序:"+"key:value = " + k + ":" + v));

        //按key值降序排列
        HashMap<Integer, Integer> result1 = map.entrySet().stream()
                .sorted(Map.Entry.<Integer, Integer>comparingByKey().reversed())
                .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,
                        (oldValue, newValue) -> oldValue, LinkedHashMap::new));
        result1.forEach((k, v) -> System.out.println("按key降序排列:"+"key:value = " + k + ":" + v));

        //按value值升序排列
        HashMap<Integer, Integer> result2 = map.entrySet().stream()
                .sorted(Map.Entry.comparingByValue())
                .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,
                        (oldValue, newValue) -> oldValue, LinkedHashMap::new));
        result2.forEach((k, v) -> System.out.println("按Value升序:"+"key:value = " + k + ":" + v));
        //按value值降序排列
        HashMap<Integer, Integer> result3 = map.entrySet().stream()
                .sorted(Map.Entry.<Integer, Integer>comparingByValue().reversed())
                .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,
                        (oldValue, newValue) -> oldValue, LinkedHashMap::new));
        result3.forEach((k, v) -> System.out.println("按Value将序结果:"+"key:value = " + k + ":" + v));
    }

运行结果:
原始Map数据:key:value = 1:4
原始Map数据:key:value = 2:1
原始Map数据:key:value = 3:7
原始Map数据:key:value = 4:8
原始Map数据:key:value = 5:6
原始Map数据:key:value = 6:5
原始Map数据:key:value = 7:3
原始Map数据:key:value = 8:2
按key升序:key:value = 1:4
按key升序:key:value = 2:1
按key升序:key:value = 3:7
按key升序:key:value = 4:8
按key升序:key:value = 5:6
按key升序:key:value = 6:5
按key升序:key:value = 7:3
按key升序:key:value = 8:2
按key降序排列:key:value = 8:2
按key降序排列:key:value = 7:3
按key降序排列:key:value = 6:5
按key降序排列:key:value = 5:6
按key降序排列:key:value = 4:8
按key降序排列:key:value = 3:7
按key降序排列:key:value = 2:1
按key降序排列:key:value = 1:4
按Value升序:key:value = 2:1
按Value升序:key:value = 8:2
按Value升序:key:value = 7:3
按Value升序:key:value = 1:4
按Value升序:key:value = 6:5
按Value升序:key:value = 5:6
按Value升序:key:value = 3:7
按Value升序:key:value = 4:8
按Value将序结果:key:value = 4:8
按Value将序结果:key:value = 3:7
按Value将序结果:key:value = 5:6
按Value将序结果:key:value = 6:5
按Value将序结果:key:value = 1:4
按Value将序结果:key:value = 7:3
按Value将序结果:key:value = 8:2
按Value将序结果:key:value = 2:1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

恒二哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值