java将map根据key分组_Map根据value值进行分组

今天碰到同事在群里问怎么把一个Map根据value进行分组,当时我的第一想法是将value和key互换,

多个value对应的不同key作为集合,代码如下:

1

2

MapSataMap=new HashMap<>();

final Map> 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() {

@Override

public void accept(String key, Integer value) {

if(groupMap.containsKey(value)){

groupMap.get(value).add(key);

}else{

List values = new ArrayList<>();

values.add(key);

groupMap.put(value, values);

}

}

});

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

Map>>result= SataMap.entrySet().stream().collect(Collectors.groupingBy(c -> c.getValue()));

1

将Map转换为一个entry集合,然后再用集合分组的方式,就很简单的实现这个功能了

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页

打赏作者

满宏刚

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

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值