将对象列表转换为映射Java 8流

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将对象列表转换为映射Java 8流相关的知识,希望对你有一定的参考价值。

我有如下的pojo

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

此雇员类用于从mybatis orm中获取对象列表(列表)。

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

我必须将其转换为地图

我尝试过以下方法,但是由于期望使用getName()和getId()方法而没有用

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

[请注意,有一种方法可以在不修改Employee pojo的情况下实现流。

注意:我知道我们可以为每个循环使用ofr。

答案

您应该总是发布精心设计的问题,但是当您是新手时,请忽略该部分。我在这里假设您的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,那将是很好的,因此能够为您提供详细的帮助。

另一答案

应该是

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

以上是关于将对象列表转换为映射Java 8流的主要内容,如果未能解决你的问题,请参考以下文章

Java 8 流:迭代列表映射

入口集上的 Java 8 流映射

如何使用流将列表转换为带有索引的地图 - Java 8?

Java 8:将具有字符串值的映射转换为包含不同类型的列表

Java 8流 - 考虑到NULL,将UUID列表转换为String列表。

在java 8中将地图映射转换为单个值列表[关闭]