如何删除Array List Java中的重复元素

时间:2018-05-25 13:03:27

标签: java

我有两个列表(arrayList1arrayList2)包含重复的对象。

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);

在上面的列表中,arrayList1arrayList2包含一个具有相同值的相同对象。我比较了arrayList1arrayList2,如果它们包含任何重复的元素,我想删除该重复的元素。

任何人都可以建议我如何比较两个对象并删除重复的对象

注意:我想比较两个列表和所有值(empname,email,mobile)

2 个答案:

答案 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;
        }
    }
}