在Java中,我可以从对象列表中提取单个字段并将其分配给使用lambda的变量吗?

时间:2019-07-02 14:18:48

标签: java list lambda

我有一个DTO列表,我需要从一个对象列表中提取一个字段,但是只提取一次。提取列表中的哪个对象都没有关系,因为该字段在列表中的每个对象上均具有相同的值。

例如:

List<T> list;
dateDTO Fields:    ID Date        Price
                    1 02/02/2019   33.5
                    2 02/02/2019   15.5
                    3 02/02/2019    7.5
                    4 02/02/2019   30.0

String date = "this would need to be valorized with the field 'Date'";

鉴于日期字段始终是相同的,我如何使用lamdba做到这一点?在类方法中,我只能访问列表,而不能访问单个对象。

编辑:更新了我的问题,以反映列表是列表的事实,该列表已通过各种DTO,但是我只需要为我通过的一个可能的DTO执行此操作,因为只有一个具有日期i需要。我们称之为dateDTO。

2 个答案:

答案 0 :(得分:4)

Date date = list.isEmpty() ? null : list.get(0).getDate();
Date date = list.stream().findAny().map(DTO::getDate).orElse(null);
Optional<Date> date = list.stream().findAny().map(DTO::getDate);

答案 1 :(得分:1)

类似这样的东西:

Function<List<DTO>, Date> datePicker = dtoList -> dtoList.isEmpty() ? null : dtoList.get(0).getDate();

应该做。

换句话说:您需要定义一个函数,该函数接收一个List<DTO>并返回一个Date对象。然后,您只需获取第一个条目(用于非空列表)即可实现。