场景

获取到了员工对象的list,每个员工对象有一个部门Id的属性,怎样根据这个部门id实现将这个list进行分组,

使部门id相同的分在一组。

具体实现效果类似于sql 查询中的group by。

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

首先获取这个对象的list

List<KqsjTian> kqsjTianList = kqsjTianService.tjselectkqsj(kqsjSelectParam);

其中KqsjTian是对象,其有部门id属性

Map<Long, List<KqsjTian>> bmListMap = new HashMap<Long, List<KqsjTian>>();
bmListMap = kqsjTianList.stream().collect(Collectors.groupingBy(kqsjTian -> kqsjTian.getBmid()));

然后调用list的stream方法再调用collect方法,前面声明的map第一个参数是分组的依据。

这里是部门id是long型的,所以第一个参数是Long型的,然后kqsjTian.getBmid()是获取每个对象的部门id属性。

获取分组后的数据的大概数据结构如下

获取之后就可以遍历这个map进行分别的处理

for (Map.Entry<Long, List<KqsjTian>> entry : bmListMap.entrySet()) {List<KqsjTian> currnrtbmList = entry.getValue();for (KqsjTian kqsjTian:currnrtbmList) {//计算考勤人数if(kqsjTian.getKqzt()!=null && Constants.KQZT_ZC.contains(kqsjTian.getKqzt())){kqrs++;}}
}

每一个entry是一组bmid相同的list,要获取每一个entry的key即部门id

entry.getKey()

获取每个的value

List<KqsjTian> currnrtbmList = entry.getValue();

Java中怎样根据对象list的某对象的属性进行分组相关推荐

  1. java中怎样创建多个对象,java中StringBuilder.appent方法创建几个对象

    在Java中StringBuilder是继承AbstractStringBuilder,在AbstractStringBuilder是byte[] value; 存放字符内容 public Abstr ...

  2. 四十三、深入Java中的数组流,数据流和对象流操作

    @Author:Runsen @Date:2020/6/8 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业排名 ...

  3. 6.java中什么是类_类、对象(java基础知识六)

    1.Java约定俗成 java约定俗成1,类名接口名 一个单词首字母大写,多个单词每个单词首字母都大写2,方法名和变量名 一个单词全部小写,多个单词从第二个单词首字母大写 建议:如果能用英语尽量用英语 ...

  4. Java中,你真的了解你的对象吗?

    面向对象的编程语言 众所周知,Java是一门面向对象的编程语言,有人会问,什么是面向对象的编程语言呢,通常听到最多又最古老的话就是"万物皆对象",那么你对你的"对象&qu ...

  5. resultJP在Java中_java result是如何直接变为对象的

    importjava.sql.*;publicclassGradation{//创建类staticConnectioncon;//声明Connection对象staticStatementsql;// ...

  6. java中BOM是什么_Java-BOM与DOM对象

    一.BOM对象 BOM(Browser Object Model)是指浏览器对象模型,可以对浏览器窗口进行访问和操作.使用 BOM,开发者可以移动窗口.改变状态栏中的文本以及执行其他与页面内容不直接相 ...

  7. java猫抓老鼠_用猫抓老鼠的实例理解java中面向对象的编程与类和对象以及方法的概念...

    今天看到马士兵讲的关于面向对象编程的思路,用了一个猫抓老鼠的例子,我觉得这个例子非常形象,于是写在这里,方便学习理解和以后查看 class cat{ //声明一个类–"猫" int ...

  8. java中什么是类?什么是对象?

    首先什么是对象呢?可谓是万物皆对象,对象是客观存在的事物,可以说任何客观存在的都是可以成为对象,一台电脑,一直钢笔,一个人,一辆轿车等等,都是可以成为对象. 那么什么是类呢?类是对象的模子,具有相同属 ...

  9. java中反射机制通过字节码文件对象获取字段和函数的方法

    pclass = Class.forName("get_class_method.Person");//Field ageField = pclass.getField(" ...

  10. Java中的Set集合接口实现插入对象不重复的原理

    当使用set集合时,是需要重写set相关类的hashCode和equals方法的. 在java的集合中,判断两个对象是否相等的规则是: 1).判断两个对象的hashCode是否相等 .       如 ...

最新文章

  1. asp提供在线文章翻译的功能(转)
  2. MySQL数据类型--------字符串类型实战
  3. LeetCode 121. Best Time to Buy and Sell Stock--Java,Python,C++解法
  4. android studio 显示view树_Android 沉浸式解析和轮子使用
  5. leetcode算法题--重建二叉树
  6. 第22节 三个败家子(22)——霸王无敌
  7. 初学Java ssh之Spring 第二篇
  8. HashMap是如何工作的
  9. python根须系统斜杠_深入浅出Python中的os模块
  10. WPF中的图像处理简介
  11. Mac系统下设置Maven环境
  12. “百度开放云编程马拉松”成都赛区19件作品及团队介绍
  13. python 入门学习,52周存钱挑战
  14. 加法C语言基础程序,C语言菜鸟基础教程之加法
  15. Linux stress命令详解
  16. 程序员面试必问:你为什么要离开上一家公司。你会怎么回答?
  17. c语言贾宗璞答案,c语言程序设计答案贾宗璞 许合利
  18. Tcl学习0——Tcl和Tk介绍
  19. 选择题库中的试题动态生成试卷(word格式)
  20. 《C语言程序设计》江宝钏主编-习题4-2-分段函数

热门文章

  1. Windows 10安装CUDA10.1+cudnn7.6.0+Pytorch1.3.0
  2. Ubuntu16.04安装ROS时,sudo rosdep init报错,Error: cannot download default sources list from:
  3. ps里面怎么插入流程图_photoshop cs6绘画带箭头简单流程图的操作步骤介绍
  4. 解决:Cannot resolve plugin org.apache.maven.plugins:maven-compiler-plugin:2.3.2问题
  5. 计算机cpu 和 主板型号,CPU和主板怎么搭配?intel七代/八代/九代处理器和主板搭配对照表...
  6. js 调用php 导出表格,[拿来主义]使用layui纯JS导出html页面中的table为excel
  7. jsp 下拉列表选取触发function_Bootstrap下拉菜单样式
  8. 双稳态电路的两个稳定状态是什么_干货|常见的脉冲电路到底有何用途和特点?终于了解了!|脉冲|晶体管|双稳|单稳|振荡器...
  9. 传输层端口号的范围是多少?被分为哪两部分_青岛家用电器检测费用多少
  10. LVS-DR+Keepalived 高可用群集