如果该列表具有具有相同元素的唯一对象,如何从列表中删除这些对象?
static class UserDTO {
private String name;
private String email;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
UserDTO u1 = new UserDTO();
u1.setEmail("alex@gmail.com");
u1.setName("one");
UserDTO u2 = new UserDTO();
u2.setEmail("andy@gmail.com");
u2.setName("two");
UserDTO u3 = new UserDTO();
u3.setEmail("andy@gmail.com");
u3.setName("three");
UserDTO u4 = new UserDTO();
u4.setEmail("ankit@gmail.com");
u4.setName("four");
UserDTO u5 = new UserDTO();
u5.setEmail("amar@gmail.com");
u5.setName("five");
List<UserDTO> users = new ArrayList<>();
users.add(u1);
users.add(u2);
users.add(u3);
users.add(u4);
users.add(u5);
现在如何将此用户列表排序或过滤到只有 u1,u2,u4,u5 的新列表,因为 u2,u3 具有相同的电子邮件。
我尝试使用所有这些选项 1)
List<UserDTO> newUsersList = uers.stream().distinct().collect(Collectors.toList());
2)
List<UserDTO> newUsersList = users.stream().filter(o-> ! o.getEmail().equalsIgnoreCase(users.parallelStream().findAny().get().getEmail())).collect(Collectors.toList());
3)
List<UserDTO> newUsersList = users2.stream().filter(o-> users2.stream().map(UserDTO::getEmail).anyMatch(p -> !p.equalsIgnoreCase(o.getEmail()))).collect(Collectors.toList());
4)
Set<UserDTO> newUsersList = users2.stream().filter(o-> users2.stream().map(UserDTO::getEmail).anyMatch(p -> !p.equalsIgnoreCase(o.getEmail()))).collect(Collectors.toSet());
我想要
List<UserDTO> newUsersList = new ArrayList<>();
for(UserDTO u :newUsersList ) {
System.out.println(u.getName() + " "+u.getEmail());
}
印刷
one alex@gmail.com
two andy@gmail.com
four ankit@gmail.com
five amar@gmail.com
斯蒂芬大帝
互换的青春
相关分类