我有两个列表(arrayList1
,arrayList2
)包含重复的对象。
Ex : Employee ( empname, email, mobile)
Employee e = new Employee();
e.setEmpName("chandu");
e.setEmail("chandu@gmail.com");
e.setMobile("9030128664");
arrayList1.add(e);
Employee e1 = new Employee();
e1.setEmpName("ramesh");
e1.setEmail("ramesh@gmail.com");
e1.setMobile("9154618845");
arrayList2.add(e);
arrayList2.add(e1);
在上面的列表中,arrayList1
和arrayList2
包含一个具有相同值的相同对象。我比较了arrayList1
和arrayList2
,如果它们包含任何重复的元素,我想删除该重复的元素。
任何人都可以建议我如何比较两个对象并删除重复的对象
注意:我想比较两个列表和所有值(empname,email,mobile)
答案 0 :(得分:2)
有几种方法,我能想到的很少:
<强> 1。普通Java
public void removeDuplicatesFromList() {
List<Integer> listWithDuplicates = Lists.newArrayList(0, 1, 2, 3, 0, 0);
List<Integer> listWithoutDuplicates = new ArrayList<>(new HashSet<>(listWithDuplicates));
assertThat(listWithoutDuplicates, hasSize(4));
}
<强> 2。使用java(lambda)
public void removeDuplicatesFromList() {
List<Integer> listWithDuplicates = Lists.newArrayList(1, 1, 2, 2, 3, 3);
List<Integer> listWithoutDuplicates = listWithDuplicates.stream()
.distinct()
.collect(Collectors.toList());
}
第3。与番石榴
public void removeDuplicatesFromList() {
List<Integer> listWithDuplicates = Lists.newArrayList(0, 1, 2, 3, 0, 0);
List<Integer> listWithoutDuplicates = Lists.newArrayList(Sets.newHashSet(listWithDuplicates));
assertThat(listWithoutDuplicates, hasSize(4));
}
希望这有帮助,
答案 1 :(得分:0)
覆盖员工类中的equals方法,然后您可以轻松地比较两个员工对象。 的 Employee.java 强>
public class Employee {
private String name;
private String email;
private String mobile;
//setters and getters
@Override
public boolean equals(Object obj) {
if (obj instanceof Employee) {
Employee objUser = (Employee) obj;
if(this.name.equals(objUser.getName())&&this.email.equals(objUser.getEmail())&&this.mobile.equals(objUser.getMobile()))
return true;
} else {
return false;
}
}
}