java 高效列转行,java 列转行「建议收藏」

java 高效列转行,java 列转行「建议收藏」一个员工在多个部门内,一个部门有多个员工List———–>Map>1.部门类publicclassDept{publicDept(Stringid){this.id=id;}privateStringid;//省略get,set方法}2.员工类publicclassUser{publicUser(Stringid)…

大家好,又见面了,我是你们的朋友全栈君。

一个员工在多个部门内,一个部门有多个员工

List ———–> Map>

1.部门类

public class Dept {

public Dept(String id) {

this.id = id;

}

private String id;

//省略get,set 方法

}

2.员工类

public class User {

public User(String id) {

this.id = id;

}

private String id;

private List deptList;

//省略get,set 方法

}

3: 测试类

public class TestDemo {

public static void main(String[] args) {

User user1 = new User(“员工1”);

User user2 = new User(“员工2”);

User user3 = new User(“员工3”);

Dept dept1 = new Dept(“部门1”);

Dept dept2 = new Dept(“部门2”);

ArrayList deptList = new ArrayList<>();

deptList.add(dept2);

deptList.add(dept1);

// 员工1 = 部门1,2

user1.setDeptList(deptList);

// 员工2 = 部门1

user2.setDeptList(Collections.singletonList(dept1));

// 员工3 = 部门1,2

user3.setDeptList(deptList);

ArrayList userList = new ArrayList<>();

userList.add(user3);

userList.add(user2);

userList.add(user1);

/* 转换成部门map应该为

* 部门1 = 员工1,2,3

* 部门2 = 员工1,3

*/

}

}

4.1我的实现:

先建一个组合类

public class UserComposite {

public UserComposite(User user, String deptId) {

this.user = user;

this.deptId = deptId;

}

private User user;

private String deptId;

//省略 get,set 方法

}

4.2: 实现代码

Map> map = userList.stream()

// 过滤空部门的数据

.filter(user -> user.getDeptList() != null && !user.getDeptList().isEmpty())

// 转换部门和员工的关系

.map(user-> user.getDeptList().stream().map(dept-> new UserComposite(user, dept.getId())).collect(Collectors.toList()))

// 合并流进行分组

.flatMap(List::stream).collect(Collectors.groupingBy(UserComposite::getDeptId, Collectors.mapping(UserComposite::getUser, Collectors.toList())));

System.out.println(map);

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/148981.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • IPTV质量评估模型(一)基础篇

    IPTV质量评估模型(一)基础篇

    2021年8月20日
    62
  • 所谓齐次坐标就是用_什么叫齐次

    所谓齐次坐标就是用_什么叫齐次目录[第一篇:关于齐次坐标的理解(经典)](https://blog.csdn.net/janestar/article/details/44244849)[第二篇:齐次坐标的理解](http://www.cnblogs.com/csyisong/archive/2008/12/09/1351372.html)[第三篇:如何通俗的解释仿射变换?](https://www.matongxue.co…

    2025年7月16日
    4
  • 【mysql 索引】mysql 添加索引

    【mysql 索引】mysql 添加索引主要内容:1、什么是索引2、添加索引sql3、索引所用的算法4、补充下概念5、索引的缺点6、经典案例一、什么是索引?  索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录。表里面的记录数量越多,这个操作的代价就越高。如果作为搜索条件的列上已经创建

    2022年6月2日
    37
  • java后端开发题库_2020年Java题库整理

    2020年Java题库整理(WUST)前言:去我的个人博客阅读效果更好哟。知识点整理:1.Java语言具有跨平台性,是一种面向对象的语言,程序具有可移植性,不可多继承。2.Java的标准版主要用于桌面级的应用和数据库的开发。3.main()的头定义只能为publicvoidmain,一个类中可以没有main()方法。4.接口可以继承接口。5.静态内部类不能访问外部类的非静态成员,内部类可…

    2022年4月11日
    47
  • python中如何打开csv文件_python如何读取csv文件

    python中如何打开csv文件_python如何读取csv文件python如何读取csv文件,我们这里需要用到python自带的csv模块,有了这个模块读取数据就变得非常容易了。工具/原料python3方法/步骤1这里以sublimetext3编辑器作为示范,新建一个文档。2我们可以先确认CSV文档是否可以正确打开。并且放在同一个文件夹里面。3importcsv这是第一步要做的,就是调用csv模块。4importcsvfile=open(‘data…

    2022年7月21日
    29
  • 分布式系列——分布系统的一些技术

    这一个系列会总结和整理自己在公司使用的技术和一些比较流行的分布式系统用的技术! 这一个系列的学习会一直持续,让自己成长,让自己走出舒适区!看过这一句话:大部分的害怕是多数是因为懒惰!!!在路上,少年,不卑不亢!

    2022年2月25日
    55

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号