これまで配列を扱ってきましたので、次は ArrayList について紹介しましょう。ArrayList は Java Collections Framework の一部であり、オブジェクトのリストを扱うためのより柔軟な方法を提供します。配列とは異なり、ArrayList は動的にサイズを増やしたり減らしたりすることができます。
-
プロジェクトディレクトリ内の ArrayListDemo.java
というファイルを開きましょう。
import java.util.ArrayList;
public class ArrayListDemo {
public static void main(String[] args) {
// ここにコードを追加します
}
}
上部の import
文に注目してください。これは、プログラムで ArrayList クラスを使用したい旨を Java に伝えます。
-
次に、文字列の ArrayList を作成しましょう。main
メソッドの中にこの行を追加します:
ArrayList<String> fruits = new ArrayList<>();
これは、文字列を保持できる空の ArrayList を作成します。<String>
の部分は「ジェネリック」と呼ばれ、ArrayList に含まれる要素の型を指定します。
-
ArrayList にいくつかの要素を追加しましょう。これらの行を追加します:
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Cherry");
add()
メソッドは、要素をリストの末尾に追加します。
-
次に、ArrayList を出力しましょう。このコードを追加します:
System.out.println("Fruits in the list:");
for (String fruit : fruits) {
System.out.println(fruit);
}
これは、配列と同じように、拡張 for ループを使用して ArrayList を反復処理します。
ヒント:いつでもプログラムをコンパイルして実行して出力を見ることができます。または、さらにコードを追加して最後にすべてを実行することもできます。
-
ArrayList にはたくさんの便利なメソッドがあります。いくつか試してみましょう。このコードを追加します:
System.out.println("\nNumber of fruits: " + fruits.size());
System.out.println("The second fruit is: " + fruits.get(1));
size()
は ArrayList 内の要素数を返し、get(index)
は指定されたインデックスの要素を取得します。
-
set()
メソッドを使用して、ArrayList 内の要素を置き換えることもできます。このコードを追加します:
// 変更前: [Apple, Banana, Cherry]
fruits.set(1, "Blueberry"); // "Banana" を "Blueberry" に置き換える
System.out.println("\nAfter replacing the second fruit:");
System.out.println(fruits); // [Apple, Blueberry, Cherry]
set(index, element)
は、指定されたインデックスの要素を新しい要素で置き換えます。ArrayList のサイズは変わりません。
-
配列とは異なり、ArrayList は add(index, element)
メソッドを使用して任意の位置に要素を挿入することができます。これは、先ほど見た set()
とは異なります。add()
がどのように機能するか見てみましょう:
// 変更前: [Apple, Blueberry, Cherry]
fruits.add(1, "Blackberry");
System.out.println("\nAfter inserting Blackberry at index 1:");
System.out.println(fruits);
// 変更後: [Apple, Blackberry, Blueberry, Cherry]
何が起こったか理解しましょう:
add(1, "Blackberry")
は、インデックス 1 に "Blackberry" を挿入します
- インデックス 1 以降の既存の要素(Blueberry、Cherry)は自動的に 1 つ右にシフトされます
- ArrayList のサイズは 1 増えます
- これは、既存の要素を置き換えてシフトやサイズを変更しない
set()
とは異なります
違いを視覚的に理解するために:
// add(index, element) を使用 - 挿入してシフト
fruits.add(1, "Blackberry"); // [Apple, Blackberry, Blueberry, Cherry]
// set(index, element) を使用 - 置き換えてシフトしない
fruits.set(1, "Blackberry"); // [Apple, Blackberry, Cherry]
-
ArrayList から要素を削除することもできます。このコードを追加します:
fruits.remove("Cherry");
System.out.println("\nAfter removing Cherry:");
System.out.println(fruits);
これは、ArrayList から最初に見つかった "Cherry" を削除します。要素が削除されると、その後の要素は左にシフトされて空きを埋めます。
-
最後に、特定の要素が ArrayList に含まれているかどうかを確認しましょう:
System.out.println("\nDoes the list contain Apple? " + fruits.contains("Apple"));
System.out.println("Does the list contain Cherry? " + fruits.contains("Cherry"));
contains()
メソッドは、ArrayList に特定の要素が含まれているかどうかを確認し、ブール値を返します。
-
ファイルを保存し、次にプログラムをコンパイルして実行します:
javac ~/project/ArrayListDemo.java
java -cp ~/project ArrayListDemo
次のような出力が表示されるはずです:
Fruits in the list:
Apple
Banana
Cherry
Number of fruits: 3
The second fruit is: Banana
After replacing the second fruit:
[Apple, Blueberry, Cherry]
After inserting Blackberry at index 1:
[Apple, Blackberry, Blueberry, Cherry]
After removing Cherry:
[Apple, Blackberry, Blueberry]
Does the list contain Apple? true
Does the list contain Cherry? false
おめでとうございます!これで、ArrayList を作成し、要素を追加および削除し、インデックスで要素にアクセスし、さまざまな ArrayList メソッドを使用しました。要素を挿入してシフトする add()
と、要素を置き換える set()
のような操作の重要な違いを学びました。ArrayList は配列よりも柔軟性が高く、必要に応じてサイズを増やしたり減らしたりできます。事前に処理する要素の数がわからない場合には非常に便利です。