Java
PR

JavaのArrayListとは?書き方や使い方をわかりやすく解説

dream2020
記事内に商品プロモーションを含む場合があります

Javaのプログラミングを始めると、データをまとめて扱う「リスト」がよく出てきます。

その中でも「ArrayList」は、簡単にデータの追加・削除・取得ができる便利なクラスです。

この記事を読めば、ArrayListの基本から使い方、そして実際のプログラム例までしっかり理解でき、あなたのJavaスキルがぐっとアップします。

ArrayListとは?基本の説明とサンプルコード

JavaのArrayListは、たくさんのデータを順番に並べて保存する箱のようなものです。
この箱は普通の配列(array)より便利で、サイズ(データの数)を自由に増やしたり減らしたりできます。
例えば、友達の名前を何人でもどんどん追加したいときにぴったりです。

ArrayListのポイント

  • サイズが自動で変わる(追加や削除が簡単)
  • 順番がある(追加した順に並ぶ)
  • 同じデータを何回も入れてもOK

では、具体的なコードで見てみましょう。

public class Sample {
    public static void main(String[] args) {
        // ArrayListを作る。今回は文字(String)を入れる箱
        ArrayList<String> friends = new ArrayList<>();

        // データを追加する
        friends.add("たろう");
        friends.add("はなこ");
        friends.add("じろう");

        // 1つ目のデータを取り出す(0から始まる)
        System.out.println(friends.get(0)); // たろう

        // データの数を調べる
        System.out.println(friends.size()); // 3

        // 2つ目のデータを削除する
        friends.remove(1);

        // もう一度数を確認する
        System.out.println(friends.size()); // 2
    }
}

このサンプルでは、

  • addでデータを追加、
  • getで取り出し、
  • sizeでデータの数を調べ、
  • removeで削除しています。

ArrayListは「自由に大きさが変わるデータの箱」と覚えればOKです。

ArrayListの書き方と使い方を徹底解説

ArrayListは「java.util」パッケージにあるクラスです。
プログラムで使う時は必ず一番上にimport java.util.ArrayList;を書きましょう。

  • ArrayListの作り方(初期化)
  • 主なメソッド一覧
  • 使い方の例を細かく解説

ArrayListの作り方(初期化)

ArrayList<データ型> 変数名 = new ArrayList<>();

ここで、データ型は入れたいデータの種類を指します。
例えば「文字列ならString」「整数ならInteger」です。

ArrayList<Integer> numbers = new ArrayList<>();

これは整数の箱を作る例です。

主なメソッド一覧

メソッド役割使い方の例
add(E e)データを追加list.add(100);
get(int index)指定位置のデータ取得list.get(0);
remove(int index)指定位置のデータ削除list.remove(1);
size()データの数を取得list.size();
clear()すべてのデータを削除list.clear();
contains(Object o)データがあるか調べるlist.contains(“たろう”);

使い方の例を細かく解説

1. データの追加

ArrayList<String> fruits = new ArrayList<>();
fruits.add("りんご");
fruits.add("みかん");
fruits.add("バナナ");
  • addは一番後ろに追加する
  • 追加するデータは必ず指定した型と同じでなければならない

2. データの取り出し

String firstFruit = fruits.get(0);
System.out.println(firstFruit); // りんご
  • getの数字は0から始まる番号
  • 範囲外の番号を指定するとエラーになるので注意

3. データの削除

fruits.remove(1); // みかんを削除
  • 指定した番号のデータが消える
  • 後ろのデータは前に詰められる

4. データの数を知る

int count = fruits.size();
System.out.println(count); // 2
  • 今いくつデータが入っているか教えてくれる

ArrayListの便利な使い方と注意点

for文と組み合わせてデータをまとめて扱う

ArrayListは繰り返し処理と相性が良いです。
例えば、全部のデータを順番に表示するならこう書きます。

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

さらに、Java5からは「拡張for文」が使えてもっと簡単。

for (String fruit : fruits) {
    System.out.println(fruit);
}

注意点:インデックスの範囲を超えないこと

例えばfruits.get(10)のように、実際より大きい番号を指定すると「IndexOutOfBoundsException」というエラーになります。
これはArrayListが持っているデータ数より大きい番号を呼び出してしまったから起こるエラーです。

型(Generics)について

ArrayListは「何の型のデータを入れるか」を決めて使います。
これを決めておかないと、異なる種類のデータが混ざりエラーの元になります。

実際のプログラムでArrayListを使ってみよう

ここでは「友達リスト管理プログラム」を作ってみましょう。

やりたいこと

  • 友達の名前を追加できる
  • 友達リストを全部表示できる
  • 友達を削除できる
import java.util.ArrayList;
import java.util.Scanner;

public class FriendList {
    public static void main(String[] args) {
        ArrayList<String> friends = new ArrayList<>();
        Scanner scanner = new Scanner(System.in);

        while (true) {
            System.out.println("1:追加 2:表示 3:削除 4:終了");
            int choice = scanner.nextInt();
            scanner.nextLine(); // 改行を読み捨てる

            if (choice == 1) {
                System.out.println("友達の名前を入力してください:");
                String name = scanner.nextLine();
                friends.add(name);
                System.out.println(name + "さんを追加しました。");

            } else if (choice == 2) {
                System.out.println("友達リスト:");
                for (String friend : friends) {
                    System.out.println(friend);
                }

            } else if (choice == 3) {
                System.out.println("削除したい友達の番号を入力してください(1から):");
                int index = scanner.nextInt();
                if (index > 0 && index <= friends.size()) {
                    String removed = friends.remove(index - 1);
                    System.out.println(removed + "さんを削除しました。");
                } else {
                    System.out.println("番号が正しくありません。");
                }

            } else if (choice == 4) {
                System.out.println("終了します。");
                break;

            } else {
                System.out.println("1〜4の番号を選んでください。");
            }
        }
        scanner.close();
    }
}

このプログラムを動かすと、

  • 名前の追加ができ、
  • 登録した名前を全部見ることができ、
  • 指定番号の名前を消すこともできて、
  • 4を選ぶと終わります。

簡単なリスト管理がArrayListでできることがわかりますね。

演習問題

  • 問題1:合計を計算する
  • 問題2:最長の文字列を探す
  • 問題3:インデックスを表示する

問題1:合計を計算する

「ArrayListに1〜5までの数字を入れて、合計を計算するプログラムを書いてください。」

解答例

public class SumNumbers {
    public static void main(String[] args) {
        ArrayList<Integer> numbers = new ArrayList<>();
        for (int i = 1; i <= 5; i++) {
            numbers.add(i);
        }

        int sum = 0;
        for (int num : numbers) {
            sum += num;
        }

        System.out.println("合計は " + sum + " です。");
    }
}

問題2:最長の文字列を探す

「ArrayListの中にある文字列の中で、一番長い文字列を探すプログラムを書いてください。」

解答例

import java.util.ArrayList;

public class LongestString {
    public static void main(String[] args) {
        ArrayList<String> words = new ArrayList<>();
        words.add("りんご");
        words.add("バナナ");
        words.add("メロン");
        words.add("スイカ");

        String longest = "";
        for (String word : words) {
            if (word.length() > longest.length()) {
                longest = word;
            }
        }

        System.out.println("一番長い文字列は " + longest + " です。");
    }
}

問題3:インデックスを表示する

「ArrayListから特定の文字列を見つけて、そのインデックス(位置)を表示するプログラムを書いてください。もし見つからなければ’見つかりませんでした’と表示してください。」

解答例

import java.util.ArrayList;

public class FindString {
    public static void main(String[] args) {
        ArrayList<String> names = new ArrayList<>();
        names.add("たろう");
        names.add("はなこ");
        names.add("じろう");

        String target = "はなこ";
        int index = names.indexOf(target);

        if (index != -1) {
            System.out.println(target + "はリストの " + index + " 番目です。");
        } else {
            System.out.println("見つかりませんでした。");
        }
    }
}

よくある質問(FAQ)

  • Q1: ArrayListと普通の配列の違いは何ですか?
  • Q2: ArrayListに異なる型のデータを混ぜて入れてもいいですか?
  • Q3: ArrayListの中のデータは順番通りに保存されますか?
  • Q4: ArrayListのサイズが大きくなると動作が遅くなりますか?
  • Q5: nullをArrayListに入れてもいいですか?

Q1: ArrayListと普通の配列の違いは何ですか?

A1: 普通の配列はサイズが決まっていて変えられませんが、ArrayListはサイズが自動で変わり、追加や削除が簡単にできます。使いやすさが大きな違いです。

Q2: ArrayListに異なる型のデータを混ぜて入れてもいいですか?

A2: 基本的にはダメです。ArrayListは型を決めて使うので、違う型のデータを入れるとコンパイルエラーや実行時エラーになります。

Q3: ArrayListの中のデータは順番通りに保存されますか?

A3: はい。追加した順番がそのまま保持されます。順番を変えたい場合は自分で並べ替える必要があります。

Q4: ArrayListのサイズが大きくなると動作が遅くなりますか?

A4: ときどき遅くなることはあります。特に大量のデータを頻繁に追加・削除すると内部でメモリの再配置が発生し時間がかかる場合があります。ただし、普通の使い方ならほとんど気にしなくて大丈夫です。

Q5: nullをArrayListに入れてもいいですか?

A5: はい、可能ですがnullが入っているとgetなどで取り出すときに注意が必要です。nullの扱いを間違うとNullPointerExceptionが発生します。

まとめ

JavaのArrayListはプログラミングの基本ツールとして欠かせないものです。

ぜひ今回の内容を繰り返し使って、実践で役立ててください。

ABOUT ME
記事URLをコピーしました