Java中Map数据把相同Value值的Key取出来并分组

 public static void main(String[] args) {
        //1.创建原始数据
        Map<String,String> map = new HashMap<>();
        map.put("1","1");
        map.put("2","1");
        map.put("3","2");
        map.put("4","3");
        map.put("5","1");

        //2.获取Value集合
        Collection<String> values = map.values();
        Set<String> set1 = new HashSet<>();
        Iterator iterator = values.iterator();
        while (iterator.hasNext()){
            //3.把相同Value值放进Set中,利用Set的去重性把value进行分组
            set1.add((String) iterator.next());
        }
        //4.创建list数组
        List<Map<String,String>> arr = new ArrayList<>();
        Iterator iterSet = set1.stream().iterator();
        //5.遍历map与Set的value进行比对,相同的放进新建的Map中
        while (iterSet.hasNext()) {
            Map<String,String> tempMap = new HashMap<>();
            String value = (String) iterSet.next();
            for (String key: map.keySet()) {
                String val = (String) map.get(key);
                if (value.equals(val)) {
                    tempMap.put(key,value);
                }
            }
            arr.add(tempMap);
        }
        //遍历结果集
        arr.forEach(arg->{
            System.out.println(arg);
        });
    }

代码执行后的结果集:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值