QA@IT
«質問へ戻る

質問を投稿

【Java】ArrayList内の要素の重複を除きユニークにするには?

JavaのArrayListについて質問です。

ArrayList内の要素の重複を除きユニークにするにはどうしたらいいですか?

List → ["a","b","b","c","a"]
上記のように重複した要素を削除して、
List → ["a","b","c"]
このような形にしたいです。

ArrayListのように要素がString型などの場合はSetにaddAllすれば重複がのぞけると思いますが、
ArrayListのように要素が自身で作成したオブジェクト(複数のフィールドを持ちます)の場合に上手くいかず困っています。

Beanの中身としては、

public class Bean {
  private String id;
  private String name;
  private Integer age;

  //Constructor...
  //Setter and Getter...
}

のような感じになります。

public class Main {
  public static void main(String[] args) {
    List<Bean> beans = new ArrayList<>();

    Bean b1 = new Bean("1","hoge","23");
    Bean b2 = new Bean("2","hoge","23");
    Bean b3 = new Bean("3","pojo","24");
    Bean b4 = new Bean("1","hoge","23");

    beans.add(b1);
    beans.add(b2);
    beans.add(b3);
    beans.add(b4);
  }
}

上記の状態でb1~b4のインスタンスがリストの要素として入りますが、
b1とb4はフィールドの内容が全て重複しているため除きたいのです。
重複データが入っているListから重複を削除したb1,b2,b3だけがのこるListを生成するにはどのようにしたらよろしいでしょうか?

ご教授いただけると助かります。
よろしくお願い致します。

# JavaのArrayListについて質問です。

## ArrayList内の要素の重複を除きユニークにするにはどうしたらいいですか?


List → ["a","b","b","c","a"]
上記のように重複した要素を削除して、
List → ["a","b","c"]
このような形にしたいです。

ArrayList<String>のように要素がString型などの場合はSetにaddAllすれば重複がのぞけると思いますが、
ArrayList<Bean>のように要素が自身で作成したオブジェクト(複数のフィールドを持ちます)の場合に上手くいかず困っています。

Beanの中身としては、
```
public class Bean {
  private String id;
  private String name;
  private Integer age;
  
  //Constructor...
  //Setter and Getter...
}
```
のような感じになります。

```
public class Main {
  public static void main(String[] args) {
    List<Bean> beans = new ArrayList<>();
    
    Bean b1 = new Bean("1","hoge","23");
    Bean b2 = new Bean("2","hoge","23");
    Bean b3 = new Bean("3","pojo","24");
    Bean b4 = new Bean("1","hoge","23");

    beans.add(b1);
    beans.add(b2);
    beans.add(b3);
    beans.add(b4);
  }
}
```
上記の状態でb1~b4のインスタンスがリストの要素として入りますが、
b1とb4はフィールドの内容が全て重複しているため除きたいのです。
重複データが入っているListから重複を削除したb1,b2,b3だけがのこるListを生成するにはどのようにしたらよろしいでしょうか?

ご教授いただけると助かります。
よろしくお願い致します。