我有一个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。
答案 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对象。然后,您只需获取第一个条目(用于非空列表)即可实现。