今天碰到同事在群里问怎么把一个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集合,然后再用集合分组的方式,就很简单的实现这个功能了

java将map根据key分组_Map根据value值进行分组相关推荐

  1. java将map根据key分组_Java将List中的实体类按照某个字段进行分组并存放至Map中操作代码...

    本篇文章小编给大家分享一下Java将List中的实体类按照某个字段进行分组并存放至Map中操作代码,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 1. ...

  2. java中map删除指定元素_Map中根据条件删除元素

    今天在写程序过程中,需要根据判断条件删除一个Map中的相应数据,我自然而然想到可以通过调用Map中的remove(Object key)函数进行删除:代码如下: public Map processM ...

  3. java遍历map(java遍历map的key)

    java中map集合怎么遍历 遍历方法代码如下: import java.util.HashMap; import java.util.Map; public class App01 { public ...

  4. Java获取map中key和value的方法

    最近项目技术转型,开始使用java来写需求.需求中碰到需要获取map中key和value的地方,网络上查了下,得到了解决方法.为防止遗忘,故记录于此. java中获取map中key和value的方式有 ...

  5. Java中Map获取key和value

    Java Map获取key和value的方法 List<Map<String,Object>> list  =new ArrayList<Map<String,Ob ...

  6. java中map集合的修改_map集合修改其中元素(示例代码)

    packagecom.swift.lianxi;importjava.util.HashMap;importjava.util.Iterator;importjava.util.Map;importj ...

  7. java遍历map获取key value

    public static void main(String[] args) {// 循环遍历Map的2中方法Map<String, Object> map = new HashMap&l ...

  8. JAVA 通过value获取Map中key的三种方法

    JAVA 通过value获取Map中key的三种方法 简介 方法描述 循环法 Stream方法 Apache Commons Collections的BidiMap 总结 简介 我们都知道Map是存放 ...

  9. php 模仿 java_js模仿java的Map集合,实现功能

    java.util 中的集合类包含 Java 中某些最常用的类.最常用的集合类是 List 和 Map.List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构 ...

最新文章

  1. 华为怎么改输入法皮肤_搜狗输入法皮肤挑花眼?这次皮肤效果也能划着看了
  2. Android自定义控件NumberCircleProgressBar(圆形进度条)的实现
  3. junit、hamcrest、eclemma的安装与使用
  4. SAP WM初阶LQ02报错 - Movement Type 901 for manual transfer orders does not exist -
  5. pycharm 波浪线报绿 Typo: In word 'xxxx'(绿色波浪线)
  6. Java基础篇:static关键字
  7. ITK:计算网格的平面参数化
  8. ASP.NET Core Web API + Identity Server 4 + Angular 6 实战小项目视频
  9. 刘翔博客答即时通信公司网友提问
  10. Git常用命令——远程操作
  11. 因为10万元 乐视云计算又把自己折腾成失信被执行人...
  12. 蠕虫病毒往往是通过进入计算机系统,2012年甘肃省三职生计算机考试题
  13. 页面导航【WP7学习札记之七】
  14. 拿去吧你,软件测试的文件和目录测试都在这
  15. 亚马逊首席科学家:揭秘 Alexa 语音识别技术|AI NEXT
  16. 忘记 Apple Watch PIN 码,如何解锁 Apple Watch?
  17. 小说网站源码_ptcms精美小说阅读网站源码(带采集规则)
  18. Scala语言精华版笔记整理
  19. channel is not opened
  20. miui免root冻结,免root停用miui应用

热门文章

  1. 如何构建“真正的”元宇宙
  2. 非全凉凉!武汉大学不允许18级19级非全日制硕士研究生参加校招?
  3. VMware16安装macOS10.15.1 - 黑苹果 - osx虚拟机
  4. activiti act_re_model 分析
  5. Windows添加路由:route add 173.18.18.0 mask 255.255.255.0 172.18.18.1
  6. windows下添加路由
  7. python stringio_python 在内存中读写:StringIO / BytesIO
  8. 删除连续相同字符python_Python 删除连续出现的指定字符的实例
  9. 【cc150】 硬币问题
  10. XBoot前后端分离开发平台springboot 2.x iview admin vue 集成activiti工作流 模型设计器 动态数据权限 权限按钮显示 s...