Java ArrayList における要素削除の主要メソッドと実装例

Java のコレクションフレームワークにおいて、ArrayList は内部配列を基にした動的配列として機能します。固定長の配列とは異なり、要素の追加だけでなく、特定の条件や位置に基づいた削除操作も柔軟に行えます。ここでは、ArrayList クラスが提供する主な削除メソッドの仕様と使用例について解説します。

1. インデックス指定による削除 (remove(int index))

特定のインデックス位置にある要素を削除する場合に使用します。削除された要素が戻り値として返され、以降の要素は詰められます。

import java.util.ArrayList;

public class RemoveByIndex {
    public static void main(String[] args) {
        ArrayList<Integer> numbers = new ArrayList<>();
        numbers.add(10);
        numbers.add(20);
        numbers.add(30);
        numbers.add(40);

        // インデックス 2 の要素(30)を削除
        Integer removedValue = numbers.remove(2);
        System.out.println("Removed: " + removedValue);
        System.out.println("Remaining: " + numbers);
    }
}

2. オブジェクト一致による削除 (remove(Object o))

等価性に基づいて一致する最初の要素を削除します。削除に成功した場合は true、リストに変更がなかった場合は false を返します。

import java.util.ArrayList;

public class RemoveByObject {
    public static void main(String[] args) {
        ArrayList<String> fruits = new ArrayList<>();
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Cherry");

        // "Banana" を削除
        boolean success = fruits.remove("Banana");
        System.out.println("Removed successfully: " + success);
    }
}

3. コレクションに含まれる要素の一括削除 (removeAll(Collection<?> c))

引数として渡されたコレクションに含まれる要素を、元のリストからすべて削除します。リストに変更があれば true を返します。

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

public class RemoveAllExample {
    public static void main(String[] args) {
        ArrayList<Integer> data = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
        List<Integer> toRemove = Arrays.asList(2, 4);

        // 2 と 4 を一括削除
        boolean changed = data.removeAll(toRemove);
        System.out.println("List changed: " + changed);
        System.out.println("Result: " + data);
    }
}

4. 条件に基づく削除 (removeIf(Predicate<? super E> filter))

Java 8 以降で利用可能な機能で、ラムダ式やメソッド参照を用いて削除条件を定義できます。条件に一致する要素が削除された場合に true を返します。

import java.util.ArrayList;

public class RemoveIfExample {
    public static void main(String[] args) {
        ArrayList<Integer> values = new ArrayList<>();
        values.add(1);
        values.add(2);
        values.add(3);
        values.add(4);
        values.add(5);

        // 偶数を削除
        boolean removed = values.removeIf(n -> n % 2 == 0);
        System.out.println("Elements removed: " + removed);
        System.out.println("Remaining: " + values);
    }
}

5. 全要素の削除 (clear())

リスト内のすべての要素を削除し、空のリストにします。戻り値はありません。

import java.util.ArrayList;

public class ClearExample {
    public static void main(String[] args) {
        ArrayList<String> items = new ArrayList<>();
        items.add("X");
        items.add("Y");
        items.add("Z");

        // 全削除
        items.clear();
        System.out.println("Is empty: " + items.isEmpty());
    }
}

タグ: Java arraylist collection-framework lambda-expression data-structures

6月29日 22:57 投稿