java List同士で共通している値を削除する

java List同士で共通している値を削除する

javaで、List同士で共通している値を削除する手順を記述してます。「retainAll」に対象のListを指定することで可能です。

環境

  • OS windows11 home
  • java 19.0.1

手順

List同士で共通している値を削除するには、「retainAll」を使用します。

List名.retainAll(List名)

実際に、使用してみます。

import java.util.ArrayList;
import java.util.List;

public class App {
    public static void main(String[] args) throws Exception {

        List<String> foo = new ArrayList<>();
        List<String> bar = new ArrayList<>();

        // 値を追加
        foo.add("aaa");
        foo.add("bbb");
        foo.add("ccc");

        // 値を追加
        bar.add("aaa");
        bar.add("ddd");
        bar.add("ccc");

        System.out.println(foo.retainAll(bar)); // true
        System.out.println(foo); // [aaa, ccc]
        System.out.println(bar); // [aaa, ddd, ccc]

    }
}

共通している箇所以外は削除されていることが確認できます。

インデックス番号も再構築されます。

import java.util.ArrayList;
import java.util.List;

public class App {
    public static void main(String[] args) throws Exception {

        List<String> foo = new ArrayList<>();
        List<String> bar = new ArrayList<>();

        // 値を追加
        foo.add("aaa");
        foo.add("bbb");
        foo.add("ccc");

        // 値を追加
        bar.add("aaa");
        bar.add("ddd");
        bar.add("ccc");

        System.out.println(foo.retainAll(bar)); // true

        System.out.println(foo.indexOf("ccc")); // 1

    }
}

また、同じ値が複数個あっても全て削除されます。

import java.util.ArrayList;
import java.util.List;

public class App {
    public static void main(String[] args) throws Exception {

        List<String> foo = new ArrayList<>();
        List<String> bar = new ArrayList<>();

        // 値を追加
        foo.add("aaa");
        foo.add("bbb");
        foo.add("ccc");
        foo.add("bbb");
        foo.add("bbb");

        // 値を追加
        bar.add("aaa");
        bar.add("ddd");
        bar.add("ccc");

        System.out.println(foo.retainAll(bar)); // true
        System.out.println(foo); // [aaa, ccc]

    }
}