Java で新しいリストを作成する方法

Hassan Saeed 2023年10月12日
  1. Java で空の新しいリストを作成する
  2. Java で空でない新しいリストを作成する
  3. Java で固定サイズの非空リストを作成する
Java で新しいリストを作成する方法

このチュートリアルでは、Java でさまざまなタイプのリストを作成する方法について説明します。

Java の List はインターフェイスであり、ArrayListLinkedListVectorStack で実装されています。これはオブジェクトの順序付きコレクションを提供します。ユーザはリストのどこに各要素を挿入するかを正確に制御することができます。ユーザは整数のインデックス(リスト内の位置)で要素にアクセスしたり、リスト内の要素を検索したりすることができます。さらに、リストは重複した要素を保存することもできます。

Java で空の新しいリストを作成する

リストはインタフェースなので、リストオブジェクトを直接作成することはできません。しかし、List インタフェースを実装したクラスのオブジェクトを作成することはできます。ArrayListLinkedListVectorStack です。ここに簡単な方法があります。

List myArrayList = new ArrayList();
List myLinkedList = new LinkedList();
List myVector = new Vector();
List myStack = new Stack();

これらのタイプのリストは特定のデータ型を持たず、任意のタイプのオブジェクトや値を保持することができます。これらのリストを Java で作成し、値を追加してみましょう。

import java.util.*;

public class myClass {
  public static void main(String args[]) {
    // ArrayList
    List myArrayList = new ArrayList();
    myArrayList.add(1);
    myArrayList.add(2);
    myArrayList.add("three");
    System.out.println("ArrayList: " + myArrayList);

    // LinkedList
    List myLinkedList = new LinkedList();
    myLinkedList.add(4);
    myLinkedList.add(5);
    myLinkedList.add("six");
    System.out.println("LinkedList: " + myLinkedList);

    // Stack
    List myStack = new Stack();
    myStack.add(7);
    myStack.add(8);
    myStack.add("nine");
    System.out.println("Stack: " + myStack);
  }
}

出力:

ArrayList: [1, 2, three]
LinkedList: [4, 5, six]
Stack: [7, 8, nine]

リストに intString の値を追加してもエラーにならないことがわかります。

データ型を指定して、その型の値だけを格納できるようにすることも可能です。別の例を試してみましょう。

import java.util.*;

public class myClass {
  public static void main(String args[]) {
    // ArrayList
    List<Integer> myArrayList = new ArrayList<>();
    myArrayList.add(1);
    myArrayList.add(2);
    myArrayList.add("three");
    System.out.println("ArrayList: " + myArrayList);
  }
}

上記のコードでは、以下のようなエラーが発生します。

> /myClass.java:9: error: incompatible types: String cannot be converted to Integer
>         myArrayList.add("three");

これは、ArrayList オブジェクトを作成する際にデータ型を Integer に指定したためです。

Java で空でない新しいリストを作成する

空のリストオブジェクトを作成し、リストにオブジェクトを追加する方法を説明しました。それでは、オブジェクトを含むリストを作成する別の方法を見てみましょう。

import java.util.*;

public class myClass {
  public static void main(String args[]) {
    List<String> list = new ArrayList<String>() {
      {
        add("a");
        add("b");
      }
    };
    System.out.println("ArrayList: " + list);
  }
}

出力:

ArrayList: [a, b]

Java で固定サイズの非空リストを作成する

固定サイズの空でないリストを作成することもできます。その場合、addremove のような操作はサポートされません。

import java.util.*;

public class myClass {
  public static void main(String args[]) {
    List<Integer> list = Arrays.asList(1, 2);
    System.out.println("ArrayList: " + list);
  }
}

出力:

ArrayList: [1, 2]

このリストに別の要素を追加してみるとどうなるか見てみましょう。

import java.util.*;

public class myClass {
  public static void main(String args[]) {
    List<Integer> list = Arrays.asList(1, 2);
    list.add(3);
    System.out.println("ArrayList: " + list);
  }
}

上記のコードは addremove などの操作を許可していないので、以下のようなエラーが出ます。

> Exception in thread "main" java.lang.UnsupportedOperationException
> 	at java.base/java.util.AbstractList.add(AbstractList.java:153)
> 	at java.base/java.util.AbstractList.add(AbstractList.java:111)
> 	at myClass.main(myClass.java:6)

しかし、このタイプのリストでは、任意の位置で値を変更することができます。

import java.util.*;

public class myClass {
  public static void main(String args[]) {
    List<Integer> list = Arrays.asList(1, 2);
    System.out.println("Initial ArrayList: " + list);
    list.set(1, 3);
    System.out.println("Changed ArrayList: " + list);
  }
}

上記のコードは出力します。

Initial ArrayList: [1, 2]
Changed ArrayList: [1, 3]

これで、Java で異なるタイプのリストを作成する方法がわかりました。

関連記事 - Java List