カテゴリ: Java 更新日: 2026/04/25

JavaのArrayListクラスとsubListメソッドを完全解説!初心者でもわかる部分リストの取得

subListメソッド
subListメソッド

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

生徒

「Javaでリストの一部だけを取得する方法はありますか?」

先生

「その場合は、ArrayListクラスのsubListメソッドを使うと良いですよ。このメソッドを使えば、指定した範囲の要素を簡単に取得できます。」

生徒

「範囲を指定して部分リストを取得できるんですね!具体的な使い方を教えてください!」

先生

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

1. ArrayListクラスとは?

「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. subListメソッドとは?

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

subListメソッドは、リストの一部を新しいリストとして取得するためのメソッドです。このメソッドを使えば、リストの特定範囲だけを操作することができます。

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


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

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

        // リストの一部を取得
        List<String> subList = items.subList(1, 3);

        System.out.println("部分リスト: " + subList);
    }
}

このコードでは、インデックス1から3(3は含まない)までの要素を取得しています。

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

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

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

  • 元のリストとリンク: 部分リストは元のリストとリンクしており、部分リストの変更が元のリストに影響を与えます。
  • 開始インデックスと終了インデックス: 開始インデックスは含まれますが、終了インデックスは含まれません。
  • 範囲外エラーに注意: 無効な範囲を指定するとIndexOutOfBoundsExceptionがスローされます。

以下は、部分リストと元のリストのリンク関係を示す例です。


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

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

        // 部分リストを取得
        List<String> subList = items.subList(1, 3);

        // 部分リストを変更
        subList.set(0, "Blueberry");

        System.out.println("元のリスト: " + items);
        System.out.println("部分リスト: " + subList);
    }
}

このコードでは、部分リストを変更すると元のリストにも変更が反映されます。

4. 実践例: 部分リストの操作

「4. 実践例: 部分リストの操作」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

4. 実践例: 部分リストの操作
4. 実践例: 部分リストの操作

以下の例では、部分リストを使用して、リスト内の一部だけを操作する方法を示します。


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

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

        // 部分リストを取得
        List<String> subList = items.subList(1, 4);

        // 部分リストの要素を削除
        subList.clear();

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

このコードでは、部分リストをクリアすると元のリストからも該当範囲の要素が削除されます。

5. subListメソッドとfor文の組み合わせ

5. subListメソッドとfor文の組み合わせ
5. subListメソッドとfor文の組み合わせ

subListメソッドで取得した部分リストは、通常のリストと同じようにfor文で処理することができます。

これにより、リストの特定範囲だけを順番に処理することが可能になります。


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

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

        // 部分リストを取得
        List<String> subList = items.subList(1, 4);

        for (int i = 0; i < subList.size(); i++) {
            System.out.println(subList.get(i));
        }
    }
}

このように、部分リストを使うことでリストの一部だけを効率よく処理できます。

6. subListメソッドとListインターフェース

6. subListメソッドとListインターフェース
6. subListメソッドとListインターフェース

subListメソッドの戻り値はListインターフェース型です。そのため、ArrayListとしてではなく、一般的なリストとして扱うことができます。

これにより、さまざまなリスト操作メソッドをそのまま利用することが可能です。


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

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

        List<String> subList = items.subList(0, 2);

        subList.add("Apricot");

        System.out.println("元のリスト: " + items);
        System.out.println("部分リスト: " + subList);
    }
}

このように、List型として扱うことで柔軟なリスト操作が可能になります。

7. subListメソッドを使ったデータ分割

「7. subListメソッドを使ったデータ分割」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

7. subListメソッドを使ったデータ分割
7. subListメソッドを使ったデータ分割

subListメソッドは、リストを複数の部分に分割して処理する場合にも便利です。

例えば、大きなリストをいくつかのグループに分けて処理するような場面で活用できます。


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

public class SubListSplitExample {
    public static void main(String[] args) {
        ArrayList<Integer> numbers = new ArrayList<>();

        for (int i = 1; i <= 10; i++) {
            numbers.add(i);
        }

        List<Integer> firstHalf = numbers.subList(0, 5);
        List<Integer> secondHalf = numbers.subList(5, 10);

        System.out.println("前半のデータ: " + firstHalf);
        System.out.println("後半のデータ: " + secondHalf);
    }
}

このように、subListを利用することでリストを簡単に分割して処理することができます。

まとめ

まとめ
まとめ

今回はJavaのArrayListクラスにおけるsubListメソッドについて学びました。このメソッドを使うことで、リストの特定範囲を簡単に取得し、その範囲の要素を操作できることが分かりました。subListメソッドは、元のリストとリンクしているため、部分リストへの変更が元のリストにも反映される点に注意が必要です。また、開始インデックスと終了インデックスの扱い方や、範囲外エラーに気を付けることも重要です。

以下に、今回学んだ内容を実践的に確認するためのプログラム例を追加します。


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

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

        // 部分リストを取得
        List<String> subList = items.subList(2, 5);

        System.out.println("部分リスト: " + subList);

        // 部分リストを変更
        subList.set(0, "Cranberry");

        System.out.println("元のリスト: " + items);
        System.out.println("部分リスト: " + subList);
    }
}

このプログラムでは、subListを活用してリストの特定範囲を取得し、その内容を変更する操作を行っています。これにより、subListの特徴や注意点をさらに理解することができます。

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

生徒

subListメソッドはすごく便利ですね!部分リストを簡単に操作できるのが良いと思いました。」

先生

「そうですね。ただ、元のリストとリンクしている点には注意が必要です。部分リストを操作する前に、どのような影響があるかを考慮する習慣をつけましょう。」

生徒

「はい、分かりました!また、開始インデックスと終了インデックスの指定方法もしっかり覚えておきます。」

先生

「それが大事です。実際にコードを書いて練習することで、subListを使いこなせるようになりますよ!」

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

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

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

JavaのArrayListクラスとはどのような特徴を持つプログラムの部品なのですか?

JavaのArrayList(アレイリスト)クラスは、Javaのコレクションフレームワークという便利な仕組みに属しているクラスの一つです。最大の特徴は、プログラムの実行中にデータの数に合わせて、リスト全体のサイズを自由かつ動的に変更できる点にあります。配列(Array)とは異なり、後から要素を自由に追加したり、不要になった要素を削除したり、指定した場所の要素を簡単に取得したりすることが可能なため、初心者の方にとっても非常に扱いやすく、Javaプログラミングにおいて頻繁に利用される非常に重要なリスト形式のデータ構造と言えます。

Javaの基礎を最初から体系的に学びたい人には、 初心者向けで定評のある定番入門書がこちらです。

スッキリわかるJava入門 第5版をAmazonで見る

※ Amazon広告リンク

カテゴリの一覧へ
新着記事
New1
Spring
Spring の@RequestParamの使い方!テキストボックス、ラジオボタン、チェックボックス、セレクトボックスの値を受け取る。
更新記事
New2
JSP
EL式の基本構文まとめ!${}で使う書き方のルールを解説
更新記事
New3
Java
JavaのBigIntegerとisProbablePrimeメソッドを完全解説!初心者でもわかる素数判定
更新記事
New4
JSP
JSPで発生する主なエラーとは?初心者向けに原因と対処法をやさしく解説
新規投稿
人気記事
No.1
Java&Spring記事人気No1
JSP
JSPのおすすめ学習・用語まとめ【2026年最新版】初心者が知っておきたい基本をやさしく解説
No.2
Java&Spring記事人気No2
Java
Javaのクラスとインスタンス化、コンストラクタの使い方完全ガイド!初心者でもわかるオブジェクト指向の基礎
No.3
Java&Spring記事人気No3
Spring
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.4
Java&Spring記事人気No4
Spring
Thymeleaf(タイムリーフ)入門!初心者でもわかるSpring Bootとテンプレートエンジンの使い方
No.5
Java&Spring記事人気No5
Spring
Javaの@PreAuthorizeアノテーションを完全ガイド!初心者でもわかるメソッドセキュリティ設定
No.6
Java&Spring記事人気No6
Spring
Springの@Queryアノテーションを徹底解説!初心者でもわかるSpring Bootのカスタムクエリ
No.7
Java&Spring記事人気No7
Java
JavaのExceptionクラスを完全解説!初心者でも理解できる例外処理の基本
No.8
Java&Spring記事人気No8
JSP
JSPでCSSやJSを読み込む基本!外部ファイルのパス指定に注意しよう