转换对象列表以映射Java 8流

时间:2020-04-15 10:25:10

标签: java java-8 java-stream mybatis

我有如下的pojo

15-April-2020

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

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

我必须将其转换为Map

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

import pymongo
import datetime

client = pymongo.MongoClient()
collection = client.test.myCollection
yesterday = datetime.datetime(2020, 4, 14)
result = collection.find( { "$expr": { "$lt": [ { "$toDate": { "$toLong": "$_id" } }, yesterday ] } } )

for doc in result:
    print(doc)

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

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

2 个答案:

答案 0 :(得分:1)

您应该总是发布结构合理的问题,但是当您是新手时,请忽略该部分。我在这里假设您的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将会很好,这样可以为您提供详细的帮助。

答案 1 :(得分:0)

应该是

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