class Manager {
public int id, // primary key
private String name,
public Department department,
}
class Department {
public int deptId, //primary key
public String name,
}
我需要创建一个地图,其中
密钥 ->部门 ID
值 -> 经理名称
鉴于我有包含经理实体列表的管理器数组
ex. [new Manager(1,"John Doe", 'ObjectOfTypeDepartemnt' ]
我需要使用 Java 流创建地图
下面是 Stream API 解决方案。请记住,您必须先过滤掉这些经理,null
哪些部门以防止在获取部门 ID 时 NPE 失败。
Map<Integer, String> map = list.stream() // Stream<Manager>
.filter(m-> m.getDepartment() != null) // Stream<Manager> with departments
.collect(Collectors.toMap( // collected as Map<Integer, String>
m-> manager.getDepartment().getDeptId(), // ... key is the department ID
Manager::getName)); // ... value is the manager's name
如果原点不是List<Manager> list
而是Manager[] array
,那么使用稍微不同的方法来创建一个Stream<Manager>
:
Arrays.stream(array)...