В Java, я могу извлечь одно поле из списка объектов и назначить его переменной, используя лямбду? - PullRequest
0 голосов
/ 02 июля 2019

У меня есть список 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, которые я передаю, так как только у этого есть нужная мне дата.Давайте назовем это dateDTO.

Ответы [ 2 ]

4 голосов
/ 02 июля 2019
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 голос
/ 02 июля 2019

Примерно так:

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

должен сделать.

Другими словами: вам нужно определить функцию, которая получает List<DTO> и возвращает объект Date. И вы реализуете, просто беря первую запись (для непустых списков).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...