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]
リストに int
と String
の値を追加してもエラーにならないことがわかります。
データ型を指定して、その型の値だけを格納できるようにすることも可能です。別の例を試してみましょう。
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 で異なるタイプのリストを作成する方法がわかりました。