Как сравнить, если в исходном списке нет объекта, который присутствует в списке назначения, используя Java 8? - PullRequest
0 голосов
/ 13 февраля 2020
List<EPosition> has S and P role.

Для некоторых сотрудников роль P существует, но теперь S. не существует.

Таким образом, Source предоставит в списке только строку P, но не S.

В базе данных мы имеем как P, так и S. Мы хотим сделать все строки S пустыми (не удалять). Так как сравнить два списка

 List<EPosition> src; //Fetch from Soap
 List<EPosition> db;//Fetch from DB

 for (EPosition d: db){
   for (Eposition s: src){
     if (s.ID = d.ID){
           //Make it null
     }
   }
 }
 merge later

1 Ответ

5 голосов
/ 14 февраля 2020

Постановка задачи: Из постановки задачи я понял, что у вас есть два списка (скажем, A и B), где A содержит некоторые объекты, которые также присутствуют в B, и вы хотите установить это значение обнулить в A, используя java streams.
Решение: Таким образом, для этого вам нужно использовать карту в потоке, где каждый объект отображается на нуль, если вы найдете объект в B, а сам объект , Чтобы найти, присутствует ли объект в B, есть два способа:
a. use содержит метод списка (в вашем случае это будет метод equals объекта Eposition)

   dbs = dbs.stream()
           .map(db -> return src.contains(db) ? null :db)
           .collect(Collectors.toList());

b. просто переберите второй список, используя поток, и найдите совпадение идентификатора, используя функцию anyMatch.

   dbs = dbs.stream()
           .map(db -> return src.stream().anyMatch(sid -> sid.ID.equals(did.ID) ? null :db)
           .collect(Collectors.toList());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...