当键是不同的类属性时,如何使用 Java 流 API 创建映射?


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)...

最新更新