Java Listインターフェース完全ガイド:実装クラスと主要メソッド
Java Listインターフェース
Java Listインターフェースの目的、一般的な実装、必須メソッド、Setとの違いを解説します。
JavaにおいてListインターフェースは、順序付き・インデックスベースのコレクションで、重複を許可しランダムアクセスをサポートします。Collectionを拡張し、コレクションフレームワークの一部です。
Listの主要実装
Listはインターフェースなので、具象クラスをインスタンス化して機能を利用します:
- ArrayList – 動的配列をバックエンドに持ち、高速なランダムアクセスを提供。
- LinkedList – 双方向連結リストとして実装、挿入・削除に優れる。
- Vector – 同期化されたレガシーリスト、現代的なコードでは稀にしか使われない。
- Stack – VectorのサブクラスでLIFOセマンティクスに従う。

これらのクラスはjava.utilパッケージで定義されています。
コードでのList使用
まずjava.util.List(および使用する具象クラス)をインポートします。
// ArrayList実装 List<String> arrayList = new ArrayList<>(); // LinkedList実装 List<String> linkedList = new LinkedList<>();
変数arrayListとlinkedListはすべてのListメソッドを公開します。
必須Listメソッド
以下のメソッドはすべてCollectionから継承され、あらゆるList実装で利用可能です。
add(E e)– 要素を追加addAll(Collection<? extends E> c)– 一括追加get(int index)– インデックスで取得iterator()– 順次走査set(int index, E element)– 要素を置換remove(Object o)– 値で削除removeAll(Collection<? extends E> c)– 一括削除clear()– リストを空にするsize()– 要素数toArray()– 配列に変換contains(Object o)– 要素存在チェック
ArrayListの実践
import java.util.List; import java.util.ArrayList; public class ArrayListDemo { public static void main(String[] args) { List<Integer> numbers = new ArrayList<>(); numbers.add(1); numbers.add(2); numbers.add(3); System.out.println("List: " + numbers); int third = numbers.get(2); System.out.println("Accessed Element: " + third); int removed = numbers.remove(1); System.out.println("Removed Element: " + removed); } }
出力
List: [1, 2, 3] Accessed Element: 3 Removed Element: 2
ArrayListの詳細はOracle公式ドキュメントを参照してください。
LinkedListの実践
import java.util.List; import java.util.LinkedList; public class LinkedListDemo { public static void main(String[] args) { List<Integer> numbers = new LinkedList<>(); numbers.add(1); numbers.add(2); numbers.add(3); System.out.println("List: " + numbers); int third = numbers.get(2); System.out.println("Accessed Element: " + third); int index = numbers.indexOf(2); System.out.println("Position of 2 is " + index); int removed = numbers.remove(1); System.out.println("Removed Element: " + removed); } }
出力
List: [1, 2, 3] Accessed Element: 3 Position of 2 is 1 Removed Element: 2
LinkedListの詳細はJavaチュートリアルを参照してください。
List vs Set
両インターフェースはCollectionを拡張しますが、重要な点で異なります:
- Listは挿入順を保持し、重複を許可。
- Setは一意性を強制し、通常順序は未定義(
SortedSet使用時を除く)。
順序と重複がユースケースで重要かどうかにより選択します。
次回以降のチュートリアルで具象実装をさらに深掘りします。
Java
- Java演算子をマスター:種類、構文、実践例
- Javaコメント:種類、使い方、ベストプラクティス
- Java拡張forループをマスター:構文、例、ベストプラクティス
- Java文字列をマスター:生成、メソッド、ベストプラクティス
- Javaインターフェース完全ガイド:概念、実装、ベストプラクティス
- Javaのtry-with-resourcesをマスターする:自動リソース管理の仕組みと活用法
- Javaアノテーション完全ガイド:種類、配置場所、実践例
- Javaコレクションアルゴリズム完全ガイド:ソート、シャッフル、検索など
- Javaオートボクシングとアンボクシング完全ガイド:実例とベストプラクティス
- Java 乱数生成:Random クラスと Math.random 実践ガイド
- Java 10の新API 70以上を解説:不変コレクション、Optional改善など