zoukankan      html  css  js  c++  java
  • Map根据value值进行分组

        今天碰到同事在群里问怎么把一个Map根据value进行分组,当时我的第一想法是将value和key互换,
    多个value对应的不同key作为集合,代码如下:
    1
    2
    Map<String,Integer>SataMap=new HashMap<>();
            final Map<Integer, List<String>> groupMap = new HashMap<>();
            SataMap.put("A",1);
            SataMap.put("b",3);
            SataMap.put("c",2);
            SataMap.put("D",4);
            SataMap.put("e",2);
            SataMap.put("f",4);
            SataMap.put("G",3);
            SataMap.put("h",2);
            System.out.println(result);
            SataMap.forEach(new BiConsumer<String, Integer>() {
                @Override
                public void accept(String key, Integer value) {
                    if(groupMap.containsKey(value)){
                        groupMap.get(value).add(key);
                    }else{
                        List<String> values = new ArrayList<>();
                        values.add(key);
                        groupMap.put(value, values);
                    }
                }
            });


    结果很快被打脸了,同事找到一个更好的方法

    Map<Integer, List<Map.Entry<String,Integer>>>result= SataMap.entrySet().stream().collect(Collectors.groupingBy(c -> c.getValue()));
    1
    将Map转换为一个entry集合,然后再用集合分组的方式,就很简单的实现这个功能了

  • 相关阅读:
    efibootmgr的使用,删除UEFI主板多余启动项。
    各种压缩解压缩命令。
    tar命令排除某文件目录压缩的方法
    豪迪QQ2013群发器破解版9月7日版
    linux virtualbox 访问 usb
    用PPA安装fcitx和搜狗输入法Linux版
    python按行读取文件,去掉换行符" "
    Git常用命令
    Spring中@Autowired 注解的注入规则
    idea导入mavenJar、mavenWeb项目
  • 原文地址:https://www.cnblogs.com/zhuyeshen/p/12530060.html
Copyright © 2011-2022 走看看