Java 如何基于对象的相同元素将集合拆分为多个集合?

Java 如何基于对象的相同元素将集合拆分为多个集合?,java,collections,Java,Collections,我收集了办公室所有部门的员工。我需要将这个集合拆分为几个不同的集合,也就是说,我想将所有员工拆分为他们的部门。重要的是,我自己不要写部门的名称,程序本身会根据需要将集合分成多个部分。有可能做到这一点吗?如果有,将如何实施 有一个集合,此集合包含office workers(所有)。该类中的员工有一个其工作的注册部门(类型为STRING)。有必要根据部门划分整个集合 很遗憾,我无法共享这些类(生产代码)。我试图通过一个for循环运行ArrayList,然后通过一个if进行拆分,但后来我被卡住了,不

我收集了办公室所有部门的员工。我需要将这个集合拆分为几个不同的集合,也就是说,我想将所有员工拆分为他们的部门。重要的是,我自己不要写部门的名称,程序本身会根据需要将集合分成多个部分。有可能做到这一点吗?如果有,将如何实施

有一个集合,此集合包含office workers(所有)。该类中的员工有一个其工作的注册部门(类型为STRING)。有必要根据部门划分整个集合

很遗憾,我无法共享这些类(生产代码)。我试图通过一个for循环运行ArrayList,然后通过一个if进行拆分,但后来我被卡住了,不知道接下来如何创建其他集合

雇员:

公共类员工{
私有字符串名称;
私有字符串lastName;
私人弦乐部;
}
方法(我在其中显示我的列表):

public void method(){//更改方法名称
List employeeKnowledgeList=employeeKnowledgeRepository
.findeEmployeeKnowledgeByStatus(KnowledgeStatus.KNOW);
List employeeList=新建ArrayList();//
employeeKnowledgeList.forEach(e->employeeList.add(employeeRepository.getOne(e.getEmployeeId());
//现在我不知道如何划分我的员工名单
}

这里需要的是一个地图数据结构,其中键是
部门
,值是
列表
。这很容易实现,如下所示:

var departmentMapped = employees
    .stream()
    .collect(Collectors.groupingBy(Employee::getDepartment));

基本上,这是将员工列表流化,并根据其各自的部门将其收集到新的
地图
。有了这个工具,您只需使用
Map#get

获取特定部门的员工列表,这里需要的是一个Map数据结构,其中键是
部门
,值是
列表
。这很容易实现,如下所示:

var departmentMapped = employees
    .stream()
    .collect(Collectors.groupingBy(Employee::getDepartment));

基本上,这是将员工列表流化,并根据其各自的部门将其收集到新的
地图
。有了这个工具,你可以简单地使用
Map#get

var获取特定部门的员工列表?whats var?
var
是Java 10中引入的一个关键字,它允许通过简单地使用
var
声明变量,并让局部类型推断推断类型(基于正确部分的赋值)。将
var departmentMapped
视为
Map departmentMapped
。我无法获取元素。请告诉我怎么做?你所说的“我无法获取元素”是什么意思?它是一个简单的映射对象。检查如何从
映射
.var中检索值?whats var?
var
是Java 10中引入的一个关键字,它允许通过简单地使用
var
声明变量,并让局部类型推断推断类型(基于正确部分的赋值)。将
var departmentMapped
视为
Map departmentMapped
。我无法获取元素。请告诉我怎么做?你所说的“我无法获取元素”是什么意思?它是一个简单的映射对象。检查如何从
映射中检索值。