Java 8 Streams удаляет повторяющиеся записи, сохраняя элемент с минимальной датой.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Java 8 Streams удаляет повторяющиеся записи, сохраняя элемент с минимальной датой.

Сообщение Anonymous »

У меня есть такие Java-компоненты:

Код: Выделить всё

class OrderDeatils {
Long orderId;
Long userId;
OrderInfo info;

// Required getters/setters
}

class OrderInfo {
OffsetDateTime orderCreatedDate;

// Required getter/setter
}
У меня есть данные в виде списка List:

Код: Выделить всё

orderId.   userId.  OrderInfo[orderCreatedDate].
1001.       123.      2015/07/07
1002.       124.      2015/08/07
1003.       125.      2015/09/07
1004.       123.      2015/08/07

Как я могу удалить повторяющуюся запись на основе идентификатора пользователя и сохранить данные с минимальной датой, как показано ниже:

Код: Выделить всё

orderId.   userId.  OrderInfo[orderCreatedDate].
1001.       123.      2015/07/07
1002.       124.      2015/08/07
1003.       125.      2015/09/07
Должен вернуть список целых объектов OrderDeatils.
Я пробовал так:

Код: Выделить всё

 list.stream().collect(
Collectors.groupingBy(OrderDeatils::getUserId,
Collectors.collectingAndThen(
Collectors.reducing((OrderDeatils d1, OrderDeatils d2)
-> d1.getInfo.getOrderCreatedDate().isBefore(d2.getInfo.getOrderCreatedDate()) ? d1 : d2), Optional::get)));
Но ответ не такой, как ожидалось, я не получаю обновленный список List в качестве вывода.

Подробнее здесь: https://stackoverflow.com/questions/692 ... e-min-date
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»