将对象列表转换为映射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。
答案
您应该总是发布精心设计的问题,但是当您是新手时,请忽略该部分。我在这里假设您的name
和ID
都是字符串类型。
下面的代码将非常适合您。
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流的主要内容,如果未能解决你的问题,请参考以下文章