Java で新しい List を作成する方法

2024-08-18

Java における List は、複数の要素を順番に格納できるコレクションインターフェースです。様々な実装クラスがありますが、最も一般的なのは ArrayListLinkedList です。

List の作成

ArrayList を作成する

import java.util.ArrayList;
import java.util.List;

public class ListExample {
    public static void main(String[] args) {
        // ジェネリクスを使って要素の型を指定
        List<String> myList = new ArrayList<>();
        // 要素を追加
        myList.add("apple");
        myList.add("banana");
        myList.add("orange");

        // 要素を表示
        for (String fruit : myList) {
            System.out.println(fruit);
        }
    }
}

LinkedList を作成する

import java.util.LinkedList;
import java.util.List;

public class ListExample {
    public static void main(String[] args) {
        List<Integer> myList = new Li   nkedList<>();
        myList.add(1);
        myList.add(2);
        myList.add(3);

        // 要素を表示
        for (int number : myList) {
            System.out.println(number);
        }
    }
}

説明

  • import java.util.ArrayList;import java.util.LinkedList; は、必要なクラスをインポートします。
  • List<String>List<Integer> は、ジェネリクスを使って List の要素の型を指定します。
  • new ArrayList<>()new LinkedList<>() で List のインスタンスを作成します。
  • myList.add() メソッドで要素を追加します。
  • for ループを使って要素を順番に処理します。

重要なポイント

  • ArrayList はインデックスによるアクセスが高速ですが、要素の挿入や削除は遅いです。
  • LinkedList は要素の挿入や削除が高速ですが、インデックスによるアクセスは遅いです。
  • 使用する List の実装クラスは、アプリケーションの要件に応じて選択してください。
  • Arrays.asList() メソッドを使って配列から List を作成できますが、作成される List は不変です。
  • Java 9 以降では、List.of() メソッドを使って不変の List を簡単に作成できます。

備考

  • List の他にも、Set, Map などのコレクションインターフェースがあります。
  • コレクションフレームワークは、Java でデータ構造を扱うための重要なツールです。



コード解説

コード1: ArrayList の作成と使用

import java.util.ArrayList;
import java.util.List;

public class ListExample {
    public static void main(String[] args) {
        // ジェネリクスを使って要素の型を指定
        List<String> myList = new ArrayList<>();
        // 要素を追加
        myList.add("apple");
        myList.add("banana");
        myList.add("orange");

        // 要素を表示
        for (String fruit : myList) {
            System.out.println(fruit);
        }
    }
}
  • import java.util.ArrayList;: ArrayList クラスをインポートします。
  • import java.util.List;: List インターフェースをインポートします。
  • List<String> myList = new ArrayList<>();: ジェネリクスを使って String 型の要素を持つ空の ArrayList を作成し、myList という変数に代入します。
  • myList.add("apple");: myList に "apple" を追加します。
  • for (String fruit : myList) { ... }: myList の各要素を fruit 変数に代入し、ループで処理します。
  • System.out.println(fruit);: fruit の値を出力します。

コード2: LinkedList の作成と使用

import java.util.LinkedList;
import java.util.List;

public class ListExample {
    public static void main(String[] args) {
        List<Integer> myList = new Li   nkedList<>();
        myList.add(1);
        myList.add(2);
        myList.add(3);

        // 要素を表示
        for (int number : myList) {
            System.out.println(number);
        }
    }
}
  • myList.add(1);: myList に 1 を追加します。



Arrays.asList() を使用して配列から List を作成する

import java.util.Arrays;
import java.util.List;

public class ListExample {
    public static void main(String[] args) {
        String[] fruits = {"apple", "banana", "orange"};
        List<String> myList = Arrays.asList(fruits);
        // 注意: この List は不変です
    }
}
  • Arrays.asList() メソッドは、配列から List を作成します。
  • しかし、作成された List は不変であるため、要素を追加や削除することはできません。

Collections.addAll() を使用して要素を追加する

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class ListExample {
    public static void main(String[] args) {
        List<Str   ing> myList = new ArrayList<>();
        Collections.addAll(myList, "apple", "banana", "orange");
    }
}
  • Collections.addAll() メソッドは、既存の List に複数の要素を一括で追加します。

Collections.singletonList() を使用して単一の要素を持つ List を作成する

import java.util.Collections;
import java.util.List;

public class ListExample {
    public static void main(String[] args) {
        List<Str   ing> myList = Collections.singletonList("apple");
        // 注意: この List は不変です
    }
}
  • Collections.singletonList() メソッドは、指定された要素のみを含む不変の List を作成します。

Java 9 以降の List.of() を使用して不変の List を作成する

import java.util.List;

public class ListExample {
    public static void main(String[] args) {
        List<String> myList = List.of("apple", "banana", "orange");
        // 注意: この List は不変です
    }
}
  • Arrays.asList()Collections.singletonList() で作成された List は不変であるため、注意が必要です。
  • ArrayListLinkedList は可変の List であり、要素の追加や削除が可能です。
  • 使用する方法は、作成したい List の性質やパフォーマンス要件に応じて選択してください。

java list collections



Mavenで最新バージョンを使用する際のコード例解説

Mavenプロジェクトの依存関係は、プロジェクトのルートディレクトリにあるpom. xmlファイルで定義されます。このファイル内で、依存関係のバージョンを指定します。例:上記の例では、Spring Frameworkのspring-coreモジュールを依存関係として追加し、version要素にlatestを指定しています。これにより、Mavenは最新バージョンを使用します。...


「Java」におけるプライベートメソッド、フィールド、内部クラスのテスト方法

Javaでプライベートメソッド、フィールド、内部クラスをテストする際に、直接アクセスできないため、工夫が必要です。反射やモックオブジェクトなどの手法を用いて、間接的にアクセスすることができます。反射によるアクセス反射は、実行時にクラスやメソッド、フィールドの情報を取得し、操作できる機能です。プライベートメンバーにアクセスする場合も、反射を使用することができます。...


「java.lang.OutOfMemoryError: Java heap space」エラーへの対処方法

「java. lang. OutOfMemoryError: Java heap space」エラーは、Javaアプリケーションが実行時に必要なメモリ量を超えた際に発生します。このエラーは、プログラムのメモリ管理に問題があることを示しており、適切に対処する必要があります。...


Javaリフレクション入門: 実践的なコード例

リフレクションとは、Javaのプログラムの実行時に、そのプログラムの構造や動作を検査、変更する能力のことです。つまり、プログラムが実行されている間でも、そのプログラムの内部を覗き込んで、クラス、メソッド、フィールドなどの情報を取得したり、操作したりできる機能です。...


HashMap と Hashtable の違い: コード例

HashMap と Hashtable はどちらも Java のコレクションフレームワークにおけるキーと値のペアを格納するデータ構造です。しかし、いくつかの重要な違いがあります。HashMap は同期化されていないため、マルチスレッド環境では安全ではありません。パフォーマンスは高いですが、複数のスレッドが同時にアクセスするとデータの整合性が損なわれる可能性があります。...



java list collections

HashMap と Hashtable の違い: コード例

HashMap と Hashtable はどちらも Java のコレクションフレームワークにおけるキーと値のペアを格納するデータ構造です。しかし、いくつかの重要な違いがあります。HashMap は同期化されていないため、マルチスレッド環境では安全ではありません。パフォーマンスは高いですが、複数のスレッドが同時にアクセスするとデータの整合性が損なわれる可能性があります。


Java Mapの効率的な反復処理:代替手法

JavaにおけるMapは、キーと値のペアを格納するコレクションです。このペアを効率的に処理する方法をいくつか紹介します。最も一般的な方法は、MapのentrySet()メソッドを使用して、キーと値のペアをエントリとして取得し、反復処理することです。


Javaコレクションの反復処理とConcurrentModificationExceptionの回避:その他の代替方法

ConcurrentModificationExceptionは、コレクションの要素を反復処理中に、そのコレクションに対して構造的な変更(要素の追加、削除、クリアなど)が行われた場合に発生する例外です。この例外は、コレクションの内部的なイテレータが、コレクションの構造が変更されたため、その状態が不正になったことを示しています。


LinkedListとArrayListの使い分けの代替手法

Javaにおけるコレクションフレームワークでは、ArrayListとLinkedListが頻繁に利用されます。両者は、内部構造と操作性能が異なるため、使い分けが重要です。内部構造: 配列ベースで、連続的なメモリブロックに要素を格納します。アクセス性能: インデックスによる要素へのアクセスが高速です。


「Java」における静的Mapの初期化について

静的Mapとは、クラス内に定義され、クラスのインスタンスが作成される前に初期化されるMapのことです。これは、すべてのクラスのインスタンス間で共有されるため、特定のクラス内のすべてのオブジェクトが同じMapインスタンスを参照することができます。