Java では 多次元の ArrayList を作成することができますか?
はい、Java では 多次元の ArrayList を作成することができます!
通常の 配列(Array) では、多次元配列(例えば int[][]
など)を作ることができますが、ArrayList でも同じように「ArrayList の中に ArrayList を入れる」ことで多次元のデータ構造を表現できます。
多次元 ArrayList の作成方法
Java で多次元の ArrayList
を作成するには、ArrayList<ArrayList<T>>
のように 入れ子構造 にします。
例:2次元の ArrayList を作る
import java.util.ArrayList;
public class MultiDimArrayListExample {
public static void main(String[] args) {
// 2次元の ArrayList を作成
ArrayList<ArrayList<Integer>> multiDimList = new ArrayList<>();
// 3つの行を追加
for (int i = 0; i < 3; i++) {
multiDimList.add(new ArrayList<>()); // 各行に新しい ArrayList を追加
}
// データを追加
multiDimList.get(0).add(1);
multiDimList.get(0).add(2);
multiDimList.get(1).add(3);
multiDimList.get(1).add(4);
multiDimList.get(2).add(5);
multiDimList.get(2).add(6);
// 表示
System.out.println(multiDimList);
}
}
実行結果
[[1, 2], [3, 4], [5, 6]]
ArrayList
のリストを作ることで、配列と同じように多次元のデータを扱えます!
3次元の ArrayList を作る
さらに、3次元の ArrayList も作成可能です。
例:3次元の ArrayList
import java.util.ArrayList;
public class ThreeDimArrayList {
public static void main(String[] args) {
// 3次元の ArrayList
ArrayList<ArrayList<ArrayList<Integer>>> threeDimList = new ArrayList<>();
// 2×2×2のデータ構造を作成
for (int i = 0; i < 2; i++) {
threeDimList.add(new ArrayList<>());
for (int j = 0; j < 2; j++) {
threeDimList.get(i).add(new ArrayList<>());
for (int k = 0; k < 2; k++) {
threeDimList.get(i).get(j).add(i + j + k); // データ追加
}
}
}
// 表示
System.out.println(threeDimList);
}
}
実行結果
[[[0, 1], [1, 2]], [[1, 2], [2, 3]]]
各次元に ArrayList
をネストすることで、3次元以上のデータ構造も簡単に作れます。
多次元 ArrayList のメリットとデメリット
メリット
✅ 可変長のデータが扱える
→ ArrayList
はサイズが動的に変えられるので、行や列の数が決まっていなくても対応できる。
✅ 異なる長さのリストもOK
→ 各行ごとに異なる長さのリストを持てる(ジャグ配列のような構造が可能)。
デメリット
❌ アクセスが遅くなる可能性
→ ArrayList
は配列と違い、データを直接参照できないため、ランダムアクセスが少し遅くなる。
❌ メモリ消費が増える
→ ArrayList
は内部でオブジェクトを参照しているため、プリミティブ型の配列よりメモリを余分に消費する。
どんなときに使うべき?
- 行ごとに異なるサイズのデータを扱いたいとき
- 要素を頻繁に追加・削除したいとき
- 固定サイズではなく可変サイズの多次元配列が必要なとき
一方で、データ量が多く、アクセス速度が重要な場合は、int[][]
のような 普通の配列を使うほうが高速 です!
まとめ
ArrayList<ArrayList<T>>
を使えば 2次元のリスト を作れる。ArrayList<ArrayList<ArrayList<T>>>
を使えば 3次元以上のリスト も可能。- サイズ可変で便利だが、アクセス速度やメモリ消費には注意。
用途に応じて ArrayList
と 配列
を使い分けましょう!
セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク
投稿者プロフィール

- 代表取締役
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。
最新の投稿
新入社員2025年2月23日【新人エンジニア必読】「入りを量りて出を制す」の考え方を仕事に活かす
新人エンジニア研修講師2025年2月23日丁寧なのにイラッとする言葉
新入社員2025年2月23日【初心者の方も安心】Gitで避けたい主なトラブル10選
新入社員2025年2月23日【新人エンジニア向け】損失回避バイアスを知って開発リスクを減らそう