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

在Java中,我可以从对象列表中提取单个字段并使用lambda将其分配给变量吗?,java,list,lambda,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/

我有一个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'";
列表;
dateDTO字段:ID日期价格
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=“这需要使用字段“date”进行值化;
鉴于日期字段总是相同的,如何使用lamdba实现这一点?在类方法中,我只能访问列表,不能访问单个对象

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

Date date = list.isEmpty() ? null : list.get(0).getDate();
Optional date=list.stream().findAny().map(DTO::getDate);
类似这样的内容:

Function<List<DTO>, Date> datePicker = dtoList -> dtoList.isEmpty() ? null : dtoList.get(0).getDate();
函数datePicker=dtoList->dtoList.isEmpty()?null:dtoList.get(0.getDate();
应该这样做


换句话说:您需要定义一个函数来接收
列表
,并返回一个日期对象。您只需获取第一个条目(对于非空列表)即可实现。

我已经尝试了所有三种解决方案,但我得到了以下错误:错误:Optional类中的方法映射无法应用于给定类型@GhostCat你是对的,我忘了补充一点,列表是一个可以容纳任何对象的列表,但它主要用于各种DTO。我将更新我的问题。@GhostCat我无法复制粘贴实际代码,因为它是工作中的一个类,但我将尝试制作一个最小的可复制示例,并再次编辑我的问题。如果我可以问一下,你为什么在约翰·库格曼的回答下删除你的评论?我认为不使用stream()这一部分非常有用。我倾向于保持事物干净,只保留对问题/答案真正重要的东西。请创建一个。代码比它的描述要好得多。如果您不能向我们展示您的实际代码,那很好;去掉不相关的工作细节。编一些能简明地说明问题的东西。
Optional<Date> date = list.stream().findAny().map(DTO::getDate);
Function<List<DTO>, Date> datePicker = dtoList -> dtoList.isEmpty() ? null : dtoList.get(0).getDate();