Java 8 здесь.У меня есть 2 POJO:
public class User {
private String id;
private String moniker;
// ... lots of other fields
// Getters & setters down here
}
public class UserDetail {
private String userId;
private String moniker;
// ... lots of other fields
// Getters & setters down here
}
Мне дают List<User>
и Set<UserDetail>
.Если в этом наборе есть UserDetails
, чьи поля userId
соответствуют любому из значений User#id
в списке пользователей, мне нужно обновить соответствующее User#moniker
полем с тем же именем в наборе UserDetail
.
Мне удалось сделать это "старым" способом (API-интерфейсы потока / коллекции до Java 8), например, так:
final List<User> users = userService.fetchSomehow();
final Set<UserDetail> userDetails = userDetailService.fetchSomehow();
for (UserDetail userDetail : userDetails) {
for (User user : users) {
if (userDetail.getUserId().equals(user.getId())) {
user.setMoniker(userDetail.getMoniker());
}
}
}
Как я могу сделать это с Java 8API-интерфейсы?То есть, как я мог бы пройти через обе коллекции и для любых элементов с совпадающими идентификаторами, использовать значение moniker
из UserDetails
, чтобы обновить значение moniker
в Users
?