Java
 Computer >> コンピューター >  >> プログラミング >> Java

JavaのArrayList・LinkedListから要素を削除する方法|remove()メソッドの使い方を解説

JavaのArrayListLinkedListは、どちらもjava.utilパッケージのListインターフェースを実装したクラスです。このインターフェースには、特定の要素を削除するためのremove()メソッドが2種類用意されています。

  • E remove(int index)
  • boolean remove(Object o)

これらのメソッドを使うことで、リストから任意の要素を簡単に削除できます。

1. E remove(int index):インデックスを指定して削除

このメソッドは、リスト内の位置(インデックス)を表す整数を受け取り、その位置にある要素を削除します。削除に成功すると、削除された要素が戻り値として返されます。

なお、引数に渡したインデックスが0未満、またはリストのサイズ以上の場合はIndexOutOfBoundsExceptionがスローされるため、範囲外の値を指定しないよう注意しましょう。

サンプルコード

import java.util.ArrayList;
import java.util.LinkedList;

public class RemoveExample {
    public static void main(String[] args) {
        // ArrayListオブジェクトの生成
        ArrayList<String> arrayList = new ArrayList<>();
        arrayList.add("JavaFX");
        arrayList.add("Java");
        arrayList.add("WebGL");
        arrayList.add("OpenCV");
        System.out.println("ArrayListの内容: " + arrayList);

        // インデックスを指定して要素を削除
        System.out.println("削除された要素:");
        System.out.println(arrayList.remove(0));
        System.out.println(arrayList.remove(2));

        // LinkedListオブジェクトの生成
        LinkedList<String> linkedList = new LinkedList<>();
        linkedList.add("Krishna");
        linkedList.add("Satish");
        linkedList.add("Mohan");
        linkedList.add("Radha");
        System.out.println("LinkedListの内容: " + linkedList);

        // インデックスを指定して要素を削除
        System.out.println("削除された要素:");
        System.out.println(linkedList.remove(0));
        System.out.println(linkedList.remove(2));
    }
}

実行結果

ArrayListの内容: [JavaFX, Java, WebGL, OpenCV]
削除された要素:
JavaFX
OpenCV
LinkedListの内容: [Krishna, Satish, Mohan, Radha]
削除された要素:
Krishna
Radha

2. boolean remove(Object o):オブジェクトを指定して削除

このメソッドは、リスト内の要素を表すオブジェクトを受け取り、最初に一致した要素を削除します。戻り値はboolean型で、次のような意味を持ちます。

  • true:要素の削除に成功した場合
  • false:該当する要素が存在せず、削除できなかった場合

サンプルコード

import java.util.ArrayList;
import java.util.LinkedList;

public class RemoveExample {
    public static void main(String[] args) {
        // ArrayListオブジェクトの生成
        ArrayList<String> arrayList = new ArrayList<>();
        arrayList.add("JavaFX");
        arrayList.add("Java");
        arrayList.add("WebGL");
        arrayList.add("OpenCV");
        System.out.println("ArrayListの内容: " + arrayList);

        // オブジェクトを指定して要素を削除
        System.out.println(arrayList.remove("JavaFX"));
        System.out.println(arrayList.remove("WebGL"));
        System.out.println("削除後のArrayListの内容: " + arrayList);

        // LinkedListオブジェクトの生成
        LinkedList<String> linkedList = new LinkedList<>();
        linkedList.add("Krishna");
        linkedList.add("Satish");
        linkedList.add("Mohan");
        linkedList.add("Radha");
        System.out.println("LinkedListの内容: " + linkedList);

        // オブジェクトを指定して要素を削除
        System.out.println(linkedList.remove("Satish"));
        System.out.println(linkedList.remove("Mohan"));
        System.out.println("削除後のLinkedListの内容: " + linkedList);
    }
}

実行結果

ArrayListの内容: [JavaFX, Java, WebGL, OpenCV]
true
true
削除後のArrayListの内容: [Java, OpenCV]
LinkedListの内容: [Krishna, Satish, Mohan, Radha]
true
true
削除後のLinkedListの内容: [Krishna, Radha]

3. Iteratorのremove()メソッドで削除する

上記の2つのメソッドに加えて、Iteratorクラスのremove()メソッドを使っても、ArrayListやLinkedListの要素を削除できます。next()で取得した直後の要素が削除対象となるため、ループ処理中に条件に合う要素だけを取り除きたい場合に特に便利です。

サンプルコード

import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;

public class RemoveExample {
    public static void main(String[] args) {
        // ArrayListオブジェクトの生成
        ArrayList<String> arrayList = new ArrayList<>();
        arrayList.add("JavaFX");
        arrayList.add("Java");
        arrayList.add("WebGL");
        arrayList.add("OpenCV");
        System.out.println("ArrayListの内容: " + arrayList);

        // Iteratorオブジェクトの取得と先頭要素の削除
        Iterator<String> it1 = arrayList.iterator();
        it1.next();
        it1.remove();

        System.out.println("削除後のArrayListの内容:");
        while (it1.hasNext()) {
            System.out.println(it1.next());
        }

        // LinkedListオブジェクトの生成
        LinkedList<String> linkedList = new LinkedList<>();
        linkedList.add("Krishna");
        linkedList.add("Satish");
        linkedList.add("Mohan");
        linkedList.add("Radha");
        System.out.println("LinkedListの内容: " + linkedList);

        // Iteratorオブジェクトの取得と先頭要素の削除
        Iterator<String> it2 = linkedList.iterator();
        it2.next();
        it2.remove();

        System.out.println("削除後のLinkedListの内容:");
        while (it2.hasNext()) {
            System.out.println(it2.next());
        }
    }
}

実行結果

ArrayListの内容: [JavaFX, Java, WebGL, OpenCV]
削除後のArrayListの内容:
Java
WebGL
OpenCV
LinkedListの内容: [Krishna, Satish, Mohan, Radha]
削除後のLinkedListの内容:
Satish
Mohan
Radha

まとめ

ArrayListやLinkedListから要素を削除するには、主に次の3つの方法があります。

  • remove(int index):インデックスを指定して削除し、削除された要素を返す
  • remove(Object o):オブジェクトと一致する最初の要素を削除し、成否をbooleanで返す
  • Iteratorのremove():反復処理中に安全に要素を削除できる

用途に応じて適切なメソッドを選択することで、効率的かつ安全にリスト操作を行えます。

  1. JavaのJTableで選択した行を削除する方法(removeRow()の使い方)

    JTableは、複雑なデータ構造を画面に表示するためのJComponentクラスのサブクラスです。JTableはMVC(Model View Controller)設計パターンに基づいており、データを行と列の形式で表示できます。また、TableModelListener、TableColumnModelListener、ListSelectionListener、CellEditorListener、RowSorterListenerといった各種リスナーインターフェースにも対応しています。 JTableから選択されている行を削除するには、DefaultTableModelクラスが提供するrem

  2. Windows 10からトロイの木馬を検出・削除する方法【完全ガイド】

    インターネットのない生活はもはや想像できません。ハッカーはこの現実につけ込み、トロイの木馬やウイルスといった脅威をネット経由で拡散しています。これらのマルウェアはシステムに侵入するだけでなく、PCを乗っ取って金銭を奪おうとします。だからこそ、適切な対策を講じ、PCへの感染を未然に防ぐことが重要です。 ウイルス・トロイの木馬・マルウェアを最も簡単に検出・削除する方法 「マルウェア」とは、ランサムウェア、ワーム、アドウェア、トロイの木馬などを総称する言葉です。PCやスマートフォンに感染しようとする悪意のあるソフトウェアであり、これらの脅威からシステムを守る最も手軽な方法は、優れたアンチウイルスソ