首页 > 解决方案 > 将对象列表转换为映射 java 8 流

问题描述

我有 pojo 如下

Class Employee () {
 Private name;
 Private id;
}

这个员工类用于从 mybatis orm 中获取对象列表(List)。

mybatis 以 List 形式返回输出,因为 mybatis 不支持 Map 作为返回类型

我必须将其转换为地图

我尝试了以下一个但没有奏效,因为它需要 getName() 和 getId() 方法

Map<String, String> map = list.stream().collect(Collectors.toMap(Employee::getId, Employee:getName));

请告知是否有一种方法可以在不修改 Employee pojo 的情况下使用流实现。

注意:我知道我们可以使用 ofr 或 for each 循环来实现。

标签: javajava-8java-streammybatis

解决方案


你应该总是发布精心制定的问题,但由于你是新手,所以忽略那部分。我在这里假设您nameID两者都是字符串类型。

下面的代码非常适合您。

Map<String, String> map = list.stream().filter(Objects::nonNull).collect(Collectors.toMap(Employee::getId, Employee::getName));

如果您也想保持秩序,请转到下面提到的。

Map<String, String> map = list.stream().filter(Objects::nonNull).collect(Collectors.toMap(Employee::getId, Employee::getName, (oldValue, newValue) -> oldValue,LinkedHashMap::new));

如果不是这样,如果你添加error message你得到的东西会很好,这样将能够为你提供详细的帮助。


推荐阅读