bugfix> java > 投稿

2つのリスト( 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);

上記のリスト arrayList1 および arrayList2 同じ値を持つ1つの同じオブジェクトが含まれます。 arrayList1 を比較しましたおよび arrayList2 重複する要素が含まれている場合は、その重複する要素を削除します。

誰かが2つのオブジェクトを合成し、重複したオブジェクトを削除する方法を提案できますか

注:2つのリストをすべての値(empname、email、mobile)と比較したい

回答 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. with 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));
    }
    
    

    お役に立てれば、

  • 従業員クラスのequalsメソッドをオーバーライドすると、2つの従業員オブジェクトを簡単に比較できます。 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;
            }
        }
    }
    
    

あなたの答え