【初心者向け】JavaのArrayListの初期化方法まとめ!用途別にやさしく解説
こんにちは。ゆうせいです。
今回は、JavaのArrayListの初期化方法について、いろいろなパターンをわかりやすく解説していきます。初心者の方でも理解しやすいように、コード例とその用途や注意点を丁寧に紹介しますね。
ArrayListとは?
まず前提として、「ArrayList(アレイリスト)」とは何でしょうか?
これは、Javaで使える「動的な配列」のようなものです。通常の配列(String[] names = new String[5];
など)は、サイズを最初に決める必要がありますよね。でもArrayListは、あとから要素をどんどん追加できる便利な入れ物です。
ArrayListの初期化パターン一覧
1. 空のArrayListを作成する(基本)
List<String> list = new ArrayList<>();
説明:
- 最も基本的な使い方。
- あとから
add()
メソッドで要素を追加していきます。
メリット:
- 汎用的で柔軟。
デメリット:
- 初期データがないときは手動で
add()
する必要がある。
2. 初期要素ありで一括生成(Arrays.asList)
List<String> list = new ArrayList<>(Arrays.asList("A", "B", "C"));
解説:
Arrays.asList()
で配列をリストに変換し、それをArrayList
のコンストラクタに渡す形。
注意点:
Arrays.asList()
で作られたリスト自体は固定長なので、直接使うとadd()
やremove()
が使えません。- だからこそ、ArrayListに包んで使うのが正解です!
3. Java 8以降:Streamを使って初期化
List<String> list = Stream.of("A", "B", "C")
.collect(Collectors.toCollection(ArrayList::new));
ポイント:
- Java 8から使えるStream APIを使った方法。
- 可読性はやや下がりますが、フィルタリングなどと組み合わせると超強力。
例:
List<Integer> evenList = IntStream.range(1, 10)
.filter(i -> i % 2 == 0)
.boxed()
.collect(Collectors.toCollection(ArrayList::new));
4. ダブルブレースイニシャライザ(非推奨)
List<String> list = new ArrayList<String>() {{
add("A");
add("B");
add("C");
}};
メリット:
- 直感的で書きやすい。
デメリット:
- 内部で匿名クラスを生成するため、メモリリークの原因になる場合も。
- Javaの公式ドキュメントでもあまり推奨されていません。
5. List.of()(Java 9以降)
List<String> list = List.of("A", "B", "C");
特徴:
- イミュータブル(変更不可)なリストを生成。
add()
やremove()
を使うと例外が出ます!
おすすめの使いどころ:
- 定数的なリストを用意したいとき。
- 例えば、「曜日のリスト」など、変わらない情報を扱う場合。
まとめ:状況に応じた使い分けをしよう!
方法 | Javaバージョン | 特徴 | add/remove可能? |
---|---|---|---|
new ArrayList<>() | すべて | 柔軟、基本形 | 可能 |
Arrays.asList + new ArrayList | 1.5以上 | 初期要素付き | 可能 |
Stream + Collectors | 8以上 | 複雑処理に便利 | 可能 |
ダブルブレース | すべて | シンプルだが非推奨 | 可能(注意) |
List.of() | 9以上 | イミュータブル | 不可 |
これからどう学べばいい?
ArrayListはJavaで非常によく使われる基本のクラスです。まずは色々な初期化方法を試しながら、「どのタイミングでどれを使えばいいか」を判断できるようにしましょう。
次は、ArrayListの操作方法(add、remove、sort、containsなど)を学ぶのがおすすめですよ!
セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク
投稿者プロフィール

- 代表取締役
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。