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

  1. Java で空の新しいリストを作成する
  2. Java で空でない新しいリストを作成する
  3. Java で固定サイズの非空リストを作成する

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

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

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

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

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 で固定サイズの非空リストを作成する

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

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); 
    } 
}

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

> 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

  • Java で配列をリストに変換する方法
  • Java で 2つのリストを結合する方法
  • comments powered by Disqus