【Java】ArrayListのremove関係のあれこれ

今回の記事ではArrayListの要素を消すメソッドについて解説していきます。具体的に解説するメソッドはremove(引数intとStringの2パターン)、removeAll、clearです。早速サンプルコードを確認していきましょう。

サンプルコード

今回作成したサンプルコードは以下のようになります。Listの要素を全て表示するという処理を何回も行うので、メソッドを作成しました。printListメソッドにListを渡すことでListの中身を全部表示してくれます。それではそれぞれのメソッドについて詳しくみていきます。

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

public class ArrayListRemove {
    public static void main(String[] args) {
        List<String> strList = new ArrayList<>();
        strList.add("Tokyo");
        strList.add("Aichi");
        strList.add("Osaka");
        strList.add("Fukuoka");
        strList.add("Tokyo");
        strList.add("Sapporo");
        strList.add("Sendai");
        strList.add("Aichi");

        System.out.println("-------初期リスト------------");
        printList(strList);

        System.out.println("----インデックス1を指定したremove------");
        strList.remove(1);
        printList(strList);
        
        System.out.println("----Tokyoを指定したremove------");
        strList.remove("Tokyo");
        printList(strList);

        List<String> removeList = new ArrayList<>();
        removeList.add("Osaka");
        removeList.add("Sendai");
        System.out.println("----removeAllメソッドでremoveListを指定した場合---------------");
        strList.removeAll(removeList);
        printList(strList);

        System.out.println("----------clearで全消し----------");
        strList.clear();
        printList(strList);

        System.out.println("----isEmptyメソッドを使うとTrueが返ってくる---------------");
        System.out.println(strList.isEmpty());


    }

    public static void printList(List<String> list) {
        for(String str: list) {
            System.out.println(str);
        }
        System.out.println("-----------ここまで-----------");
        System.out.println();
    }
}

 



Listの初期化と値の追加

まず最初にListを作成して値を追加していきます。その後一度全表示します。

List<String> strList = new ArrayList<>();
strList.add("Tokyo");
strList.add("Aichi");
strList.add("Osaka");
strList.add("Fukuoka");
strList.add("Tokyo");
strList.add("Sapporo");
strList.add("Sendai");
strList.add("Aichi");

System.out.println("-------初期リスト------------");
printList(strList);

現時点でのListの中身はこんな感じです。

-------初期リスト------------
Tokyo
Aichi
Osaka
Fukuoka
Tokyo
Sapporo
Sendai
Aichi
-----------ここまで-----------

remove(インデックスを指定)

最初にインデックス番号を指定して要素の削除を行ってみます。removeメソッドにint型の値を渡すことで、そのインデックス番号の要素を削除してくれます。

strList.remove(1);

削除した上で出力すると以下のようになります。インデックス番号1の要素だった「Aichi」が消えています。

----インデックス1を指定したremove------
Tokyo
Osaka
Fukuoka
Tokyo
Sapporo
Sendai
Aichi
-----------ここまで-----------

remove(指定した値を削除)

今度は消したい値を指定して要素の削除を行います。使用するメソッドは先ほどと同じremoveメソッドですが、渡す引数を文字列にします。今回は「Tokyo」を指定します。

strList.remove("Tokyo");

removeした上で出力してみると下記のようになります。TokyoはListのなかに二つ存在しますが、一つ目のTokyoだけ削除され、二つ目のTokyoは残ったままになります。

----Tokyoを指定したremove------
Osaka
Fukuoka
Tokyo
Sapporo
Sendai
Aichi
-----------ここまで-----------

 



removeAll

次にremoveAllメソッドを使ってみます。別のListを用意します。このremoveListには「Osaka」と「Sendai」を入れておきます。このremoveListを引数としてremoveAllメソッドに渡します。

List<String> removeList = new ArrayList<>();
removeList.add("Osaka");
removeList.add("Sendai");
strList.removeAll(removeList);

結果は以下の通りになります。removeListのなかに含まれていた「Osaka」と「Sendai」がstrListの中から削除されました。このようにremoveAllメソッドでは引数で渡されたCollectionの要素が削除されます。

----removeAllメソッドでremoveListを指定した場合---------------
Fukuoka
Tokyo
Sapporo
Aichi
-----------ここまで-----------

clear

最後にclearメソッドです。ArrayListに含まれている要素を全て削除します。

strList.clear();

出力しても当然何も出てきません。

----------clearで全消し----------
-----------ここまで-----------

おまけとしてisEmptyメソッドも試してみます。これはArrayListに要素がない場合にtrueが返ってきます。

System.out.println(strList.isEmpty());
true

まとめ

以上ArrayListの削除系のメソッドをいくつか試してみました。removeではインデックスの指定や要素の値を指定することで削除を行うことができました。removeAllでは引数で渡したCollectionの要素を削除します。clearメソッドで要素を全て消すことができisEmptyメソッドで要素が全て消えているか確かめることができます。

removeAllメソッドは別の記事でもう少し深掘りしてみたいと思います。

コメント

タイトルとURLをコピーしました