
【6日でできるJava入門】可変サイズの配列
Javaでは、配列(String[]など)は作成時にサイズを決める必要があります。しかし、ファイルなど外部データを1行ずつ読み込む場合、事前にサイズが分からないことが多いです。
そのようなケースで便利なのが、可変サイズの配列を実現するArrayListクラスです。ArrayListを使えば、後から自由に要素を追加・削除でき、配列サイズの管理も自動化されます。

1.ArrayListクラスの基本
1.1. ArrayListの特徴と宣言
ArrayListは、要素数を自由に増減できる配列のようなコレクションです。
通常配列は String[] arr = new String[10]; のように宣言し、サイズは変更できません。
一方、ArrayListは下記のように宣言します。
import java.util.ArrayList;
// 文字列を格納する可変長配列の宣言と初期化
ArrayList<String> nameList = new ArrayList<String>();<String>は格納するデータ型(ジェネリクス)。他にもIntegerや自作クラスも可。
1.2. 基本的な使い方
- 要素の追加:
add() - 要素の取得:
get() - サイズの取得:
size()
サンプル:要素の追加と出力
ファイル名: lesson22_1.java
import java.util.ArrayList;
public class lesson22_1 {
public static void main(String[] args) {
ArrayList<String> fruits = new ArrayList<String>();
fruits.add("りんご");
fruits.add("バナナ");
fruits.add("みかん");
for (int i = 0; i < fruits.size(); i++) {
System.out.println(i + ": " + fruits.get(i));
}
}
}実行結果
0: りんご
1: バナナ
2: みかん2.ファイルデータをArrayListへ格納する実践例
2.1. ファイルの各行を分割しArrayListへ格納
たとえば、都道府県名と県庁所在地が「都道府県名,県庁所在地」の形式でファイルに記録されている場合、次のように読み込んで分割し、それぞれのリストに格納できます。
サンプル:ファイルから可変長配列に格納
ファイル名: lesson22_2.java
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
public class lesson22_2 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new FileReader("sample2.txt"));
ArrayList<String> prefectures = new ArrayList<String>();
ArrayList<String> capitals = new ArrayList<String>();
String line;
while ((line = br.readLine()) != null) {
int pos = line.indexOf(',');
prefectures.add(line.substring(0, pos));
capitals.add(line.substring(pos + 1));
}
br.close();
for (int i = 0; i < prefectures.size(); i++) {
System.out.println(prefectures.get(i) + " - " + capitals.get(i));
}
}
}sample2.txtの例
Eclipseの場合、プロジェクト直下にこのファイルを配置します。
北海道,札幌
青森県,青森
岩手県,盛岡実行結果
北海道 - 札幌
青森県 - 青森
岩手県 - 盛岡2.2. 主要なArrayListメソッド(例と対応)
| 操作 | ArrayListの場合 | 配列の場合 |
|---|---|---|
| 初期化 | new ArrayList<String>() | new String[サイズ] |
| 追加 | add("A") | 該当なし |
| 要素取得 | get(i) | [i] |
| 要素の個数取得 | size() | .length |
| 上書き | set(i, "B") | [i] = "B" |
| 削除 | remove(i) | 該当なし |
3.数値型や他の型も扱える(ラッパークラス)
ArrayList<int>のような基本型は不可。- ラッパークラス(
IntegerやDouble)で扱う。
ArrayList<Integer> numbers = new ArrayList<Integer>();
numbers.add(10);
numbers.add(20);
System.out.println(numbers.get(0)); // 104.Javaバージョンとジェネリクス
- Java 5以降では
<String>のように型指定(ジェネリクス)を付けるのが標準。 - Java 1.4以前は型を指定せず、
ArrayList list = new ArrayList();と書き、要素取得時にキャストが必要。
まとめ
- 可変サイズの配列は
ArrayListを使うことで柔軟にデータ管理が可能。 - サイズ不明のデータ(ファイルなど)は
ArrayListで受け取り、size()やget()で自在に操作できる。 - ラッパークラスやジェネリクス、主要メソッドを活用して、実践的なデータ処理をマスターしましょう。
