【Java】カスタムクラスのリスト同士を比較する

カスタムクラス型を持つ、List同士の比較について解説します。

今回の目的

クラスAクラスBのリスト同士を比較し、一致する値を持つデータを抽出する

テスト環境

テスト環境は下記

項目内容
Javaバージョン21

処理実装

  • リスト同士の色コードを比較
  • 一致する色コードを抽出
  • リスト化して結果出力
Java
// import省略

public static void Main(String args[]) {
    // クラスAのリスト
    List<ClassA> listA = new ArrayList<>();
    listA.add(new ClassA("red", "#ff0000"));
    listA.add(new ClassA("blue", "#0000ff"));
    listA.add(new ClassA("green", "#00ff00"));
        
     // クラスBのリスト
    List<ClassB> listB = new ArrayList<>();
    listB.add(new ClassB("Yamada", "#ff0000"));
    listB.add(new ClassB("Koyama", "#0000ff"));
    listB.add(new ClassB("Sato", "#000000"));
        
    // 色コードが一致するものを取得
    var result = listA.stream()
        .filter(x -> listB.stream()
            .anyMatch(y -> y.getColorCode() == x.getColorCode()))
        .map(x -> x.getColorCode())
        .toList();
        
    result.forEach(x -> System.out.println(x));
    // 結果
    // >> #ff0000
    // >> #0000ff
}
Java
// import省略

public class ClassA {
    private String colorName; // 色名
    private String colorCode; // 色コード
    
    public ClassA(String colorName, String colorCode) {
        setColorName(colorName);
        setColorCode(colorCode);
    }
  
    // getter, setterメソッド...
}
Java
// import省略

public class ClassB {
    private String name; // 名前
    private String colorCode; // 色コード
    
    public ClassB(String name, String colorCode) {
        setName(name);
        setColorCode(colorCode);
    }
  
    // getter, setterメソッド...
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください