カテゴリ: Java 更新日: 2026/08/26

JavaのArrayListクラスとremoveRangeメソッドを完全解説!初心者でもわかる範囲削除

removeRangeメソッド
removeRangeメソッド

先生と生徒の会話形式で理解しよう

生徒

「Javaでリスト内の要素を範囲指定で削除する方法はありますか?」

先生

「ArrayListクラスには、範囲指定で要素を削除するためのremoveRangeメソッドがあります。ただし、このメソッドは直接使用するには少し工夫が必要です。」

生徒

「少し工夫が必要なんですね。具体的にはどうやって使うんですか?」

先生

「では、removeRangeメソッドの基本的な使い方を見ていきましょう!」

1. ArrayListクラスとは?

1. ArrayListクラスとは?
1. ArrayListクラスとは?

ArrayListは、Javaのコレクションフレームワークに属するクラスで、動的なサイズのリストを提供します。このクラスを使うことで、要素の追加や削除が簡単に行えます。

以下は、ArrayListの基本的な使用例です。


import java.util.ArrayList;

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

        System.out.println("リストの内容: " + items);
    }
}

このコードでは、ArrayListを使ってリストを作成し、要素を追加しています。

2. removeRangeメソッドとは?

2. removeRangeメソッドとは?
2. removeRangeメソッドとは?

removeRangeメソッドは、リスト内の要素を範囲指定で削除するためのメソッドです。このメソッドは、開始インデックスから終了インデックス(終了インデックスは含まない)までの要素を削除します。ただし、このメソッドはprotectedとして定義されているため、直接呼び出すにはArrayListクラスを拡張する必要があります。

以下は、removeRangeメソッドを使用した基本的な例です。


import java.util.ArrayList;

public class RemoveRangeExample extends ArrayList<String> {
    public static void main(String[] args) {
        RemoveRangeExample items = new RemoveRangeExample();
        items.add("Apple");
        items.add("Banana");
        items.add("Cherry");
        items.add("Date");
        items.add("Elderberry");

        // 範囲指定で要素を削除
        items.removeRange(1, 3);

        System.out.println("削除後のリスト: " + items);
    }
}

このコードでは、removeRangeメソッドを活用してインデックス1から3の間の要素を削除しています。

3. removeRangeメソッドの特徴と注意点

3. removeRangeメソッドの特徴と注意点
3. removeRangeメソッドの特徴と注意点

removeRangeメソッドを使用する際の特徴と注意点は以下の通りです。

  • 範囲指定が必須: 削除する範囲は、開始インデックスと終了インデックスを指定する必要があります。
  • 拡張クラスが必要: removeRangeメソッドはprotectedのため、ArrayListを拡張してアクセスする必要があります。
  • リストの再構築: 削除された要素の後続要素は自動的に詰められ、リストが再構築されます。

4. 実践例: 動的に範囲を指定して削除

4. 実践例: 動的に範囲を指定して削除
4. 実践例: 動的に範囲を指定して削除

以下の例では、ユーザー入力を使用して削除する範囲を動的に指定します。


import java.util.ArrayList;
import java.util.Scanner;

public class DynamicRemoveRangeExample extends ArrayList<String> {
    public static void main(String[] args) {
        DynamicRemoveRangeExample items = new DynamicRemoveRangeExample();
        items.add("Apple");
        items.add("Banana");
        items.add("Cherry");
        items.add("Date");
        items.add("Elderberry");

        Scanner scanner = new Scanner(System.in);
        System.out.println("開始インデックスを入力してください:");
        int start = scanner.nextInt();
        System.out.println("終了インデックスを入力してください:");
        int end = scanner.nextInt();

        items.removeRange(start, end);

        System.out.println("削除後のリスト: " + items);
    }
}

このプログラムでは、ユーザーが指定したインデックス範囲に基づいて要素を削除します。

5. removeRangeのインデックスの考え方

5. removeRangeのインデックスの考え方
5. removeRangeのインデックスの考え方

removeRangeメソッドを使用する際は、インデックスの指定方法を正しく理解することが重要です。

このメソッドでは、開始インデックスは削除対象に含まれますが、終了インデックスは削除対象に含まれません。つまり「開始以上、終了未満」の範囲が削除されます。


import java.util.ArrayList;

public class RemoveRangeIndexExample extends ArrayList<String> {
    public static void main(String[] args) {
        RemoveRangeIndexExample list = new RemoveRangeIndexExample();
        list.add("A");
        list.add("B");
        list.add("C");
        list.add("D");
        list.add("E");

        list.removeRange(1, 4);

        System.out.println("削除後のリスト: " + list);
    }
}

この例では、インデックス1から4未満の要素(B、C、D)が削除され、リストにはAとEが残ります。

6. subListを使った範囲削除の方法

6. subListを使った範囲削除の方法
6. subListを使った範囲削除の方法

removeRangeメソッドはprotectedのため、通常のArrayListでは直接使用できません。そのため、代替方法としてsubListメソッドを利用する方法もよく使われます。

subListで指定した範囲のビューを取得し、その範囲をまとめて削除することで同様の処理を実現できます。


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

public class SubListRemoveExample {
    public static void main(String[] args) {
        ArrayList<String> fruits = new ArrayList<>(Arrays.asList(
            "Apple", "Banana", "Cherry", "Date", "Elderberry"
        ));

        fruits.subList(1, 4).clear();

        System.out.println("削除後のリスト: " + fruits);
    }
}

この方法を使うと、クラスを拡張しなくても範囲指定で要素を削除することができます。

7. removeRangeを使う際のエラーに注意

7. removeRangeを使う際のエラーに注意
7. removeRangeを使う際のエラーに注意

removeRangeメソッドを使用する際は、インデックスの範囲に注意する必要があります。

存在しないインデックスを指定すると、IndexOutOfBoundsExceptionが発生する可能性があります。そのため、削除前にリストのサイズを確認することが重要です。


import java.util.ArrayList;

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

        if (list.size() >= 2) {
            list.removeRange(0, 2);
        }

        System.out.println("削除後のリスト: " + list);
    }
}

このように、事前にサイズを確認することでエラーを防ぎ、安全に範囲削除を行うことができます。

まとめ

まとめ
まとめ

今回の記事では、JavaのArrayListクラスにおけるremoveRangeメソッドの基本的な使い方、特徴、注意点について詳しく解説しました。このメソッドは、範囲を指定して要素を削除する際に便利ですが、直接利用するためにはクラスを拡張する必要がある点が特徴です。
実践例では、インデックス範囲を動的に指定する方法も紹介しました。この方法を活用することで、ユーザーの入力に基づいて柔軟な操作が可能となります。Javaのコレクションフレームワークは非常に強力で、今回の内容を理解することでさらに効率的にリスト操作を行えるようになります。

以下にremoveRangeの使用例を復習として掲載します。


import java.util.ArrayList;

public class RemoveRangeSummaryExample extends ArrayList<String> {
    public static void main(String[] args) {
        RemoveRangeSummaryExample items = new RemoveRangeSummaryExample();
        items.add("Apple");
        items.add("Banana");
        items.add("Cherry");
        items.add("Date");
        items.add("Elderberry");

        // インデックス1から3の範囲を削除
        items.removeRange(1, 3);

        System.out.println("削除後のリスト: " + items);
    }
}

このコードを実行することで、リスト操作の具体的な挙動を確認できます。

先生と生徒の振り返り会話

生徒

「今日学んだremoveRangeメソッドは、範囲指定で要素を削除するのに便利ですね。でも、なぜ直接使えないんでしょう?」

先生

「良い質問です!removeRangeメソッドがprotectedなのは、意図せぬ誤操作を防ぐためです。これにより、ArrayListを拡張して、必要な場合のみ使用できる設計になっています。」

生徒

「なるほど。直接使えない理由がわかりました。これからは、範囲削除をする場合にはクラスを拡張して使うことを意識します!」

先生

「その通りです!この方法を使えば、安全かつ効率的にリストを操作できます。次回もコレクション関連の便利なメソッドを学んでいきましょう。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

JavaのArrayListとは何ですか?初心者でも理解できるように教えてください

JavaのArrayListとは、可変長の配列のように扱えるコレクションクラスで、要素の追加や削除が簡単にできるのが特徴です。通常の配列と違い、サイズを自動的に変更できるため、Java初心者にも扱いやすいデータ構造です。

JavaのArrayListで要素を追加する方法はどのように行いますか?

ArrayListではaddメソッドを使うことで要素を簡単に追加できます。これにより、リストの末尾にデータを追加でき、動的にリストのサイズが増えていきます。
生成AIを基礎から学びたい方へ

ChatGPTなどの生成AIをこれから学びたい方に向けて、AIスキルアカデミーの口コミ・評判、料金、無料セミナーの内容を詳しくまとめています。

AIスキルアカデミーの口コミ・評判を詳しく見る
カテゴリの一覧へ
新着記事
New1
Spring
Spring Bootの@RequestParamの使い方を解説!初心者でもわかるGETリクエストのパラメータ取得
更新記事
New2
Java
JavaのLocalDateTime.formatメソッドを完全解説!初心者でもわかる日時フォーマット入門
更新記事
New3
Java
Javaのラムダ式とStreamのfilterを徹底解説!初心者でもわかる条件による絞り込み処理
更新記事
New4
Servlet
JavaのServletExceptionクラスを初心者向けに徹底解説!
更新記事
人気記事
No.1
Java&Spring記事人気No1
Servlet
JavaサーブレットのdoPostメソッドとは?初心者向けにやさしく解説!
No.2
Java&Spring記事人気No2
Servlet
JavaのHttpServletRequestWrapperとgetSessionメソッドの使い方を徹底解説!初心者向けServletのセッション管理入門
No.3
Java&Spring記事人気No3
Servlet
JavaのServletExceptionクラスを初心者向けに徹底解説!
No.4
Java&Spring記事人気No4
Servlet
JavaのHttpServletResponseクラスを初心者向けに徹底解説!
No.5
Java&Spring記事人気No5
Java
JavaのStringクラスとlengthメソッドを完全解説!初心者でも理解できる文字列の長さ取得の使い方
No.6
Java&Spring記事人気No6
Servlet
JavaのHttpSessionAttributeListenerとattributeRemovedメソッドの使い方を徹底解説!初心者でもわかるセッション属性の削除と監視
No.7
Java&Spring記事人気No7
Java
Javaのクラスとインスタンス化、コンストラクタの使い方完全ガイド!初心者でもわかるオブジェクト指向の基礎
No.8
Java&Spring記事人気No8
Servlet
JavaのHttpSessionインターフェースとgetSessionContextメソッドを徹底解説!初心者でもわかるセッション管理の基本