Java ArrayList: ダイナミックコレクションへのゲートウェイ
はじめに
こんにちは、未来のJava愛好家さん!今日は、Javaの中最も便利で多様なツールの1つ、ArrayListについて深く掘り下げます。パーティーを開くとき、どれだけの友達が来るか分からないとしましょう。固定の数の椅子を並べることはできますが、もっと人が来たらどうしましょうか?また、半分の椅子が空のままになったらどうしましょうか?そんなときに便利なのがArrayListです。プログラミングの世界では、必要に応じて伸びたり縮んだりする魔法のゲストリストのようなものです!
クラス宣言
基本的なことから始めましょう。Javaでは、ArrayListはjava.utilパッケージの一部です。使用するには、以下のようにインポートする必要があります:
import java.util.ArrayList;
ArrayListクラスは以下のように宣言されています:
public class ArrayList<E> extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, Serializable
これが怖いと感じても大丈夫です - 一步步に解説します!
これは何を意味するのでしょうか?
-
<E>
: これは型パラメータです。ArrayListは任意の型のオブジェクトを保持できることを意味します。"このArrayListは何かを保持でき、後でその型を指定します"という意味です。 -
extends AbstractList<E>
: ArrayListはAbstractListという別のクラスを基に構築されています。 -
implements List<E>, RandomAccess, Cloneable, Serializable
: これらはArrayListが実装するインターフェースで、特定の機能を提供します。
クラスコンストラクタ
ArrayListを作成する際には、3つのオプションがあります:
-
空のArrayListを作成します:
ArrayList<String> friendsList = new ArrayList<>();
-
初期キャパシティを持つArrayListを作成します:
ArrayList<Integer> numbers = new ArrayList<>(20);
-
他のコレクションからArrayListを作成します:
ArrayList<Double> scores = new ArrayList<>(existingList);
最初の例では、新しい友達リストを始めることを想象してください。二つ目の例では、20の数のリストを準備しています。三つ目の例は、既存のゲストリストをコピーして新しいリストを始めることを意味します。
クラスメソッド
ArrayListには便利なメソッドがたくさんあります。最も一般的なものをいくつか見ていきましょう:
メソッド | 説明 |
---|---|
add(E element) | リストの最後に要素を追加します |
add(int index, E element) | 指定された位置に要素を追加します |
get(int index) | 指定された位置の要素を返します |
set(int index, E element) | 指定された位置の要素を置き換えます |
remove(int index) | 指定された位置の要素を削除します |
size() | リスト内の要素の数を返します |
clear() | リストからすべての要素を削除します |
contains(Object o) | リストに指定された要素が含まれている場合はtrueを返します |
これらのメソッドは、ゲストを追加したり、誰がいるかを確認したり、誰かを退けたり(もちろん丁寧にです!)のような、さまざまなパーティートリックです。
継承されたメソッド
ArrayListは、親クラスやインターフェースからもメソッドを継承します。注目すべきものには以下の通りです:
- AbstractListから: iterator(), listIterator()
- AbstractCollectionから: toString(), isEmpty()
- Objectから: clone(), equals(), hashCode()
これらは、ArrayListに組み込まれたボーナス機能のようなものです!
文字列のArrayListに要素を追加・削除する例
知識を実践に移して、実際の世界の例を見ていきましょう。読書リストを管理するためにArrayListを作成します:
import java.util.ArrayList;
public class ReadingList {
public static void main(String[] args) {
// 本のタイトルを保存するためのArrayListを作成
ArrayList<String> bookList = new ArrayList<>();
// 本をリストに追加
bookList.add("To Kill a Mockingbird");
bookList.add("1984");
bookList.add("The Great Gatsby");
System.out.println("初期読書リスト: " + bookList);
// 特定の位置に本を追加
bookList.add(1, "Pride and Prejudice");
System.out.println("新しい本を追加した後: " + bookList);
// 本を削除
bookList.remove("1984");
System.out.println("本を削除した後: " + bookList);
// リストに本があるか確認
String searchBook = "The Great Gatsby";
if (bookList.contains(searchBook)) {
System.out.println(searchBook + " はあなたの読書リストにあります!");
} else {
System.out.println(searchBook + " はあなたの読書リストにありません。");
}
// リストのサイズを取得
System.out.println("あなたの読書リストには " + bookList.size() + " 冊の本があります。");
}
}
解説しましょう:
-
bookList
というStringオブジェクトを保持するArrayListを作成します。 -
add()
メソッドを使用して3冊の本を追加します。 -
System.out.println()
を使用して初期リストを印刷します。ここでArrayListのtoString()
メソッドが自動的に呼び出されます。 -
add(int index, E element)
を使用して、インデックス1(二つ目の位置)に"Pride and Prejudice"を追加します。 -
remove()
メソッドを使用して"1984"を削除します。 -
contains()
を使用して、"The Great Gatsby"がリストにあるか確認します。 - 最後に、
size()
を使用してリスト内の本の数を取得します。
出力
このプログラムを実行すると、以下のような出力が得られます:
初期読書リスト: [To Kill a Mockingbird, 1984, The Great Gatsby]
新しい本を追加した後: [To Kill a Mockingbird, Pride and Prejudice, 1984, The Great Gatsby]
本を削除した後: [To Kill a Mockingbird, Pride and Prejudice, The Great Gatsby]
The Great Gatsby はあなたの読書リストにあります!
あなたの読書リストには3冊の本があります。
そして、それでおしまい!ArrayListを作成し、操作し、探求しました。本クラブのパーティーを開いて、新しいタイトルを追加し、読了したものを削除し、読書の冒険を追跡するのに役立てました。
覚えておきましょう、ArrayListは非常に柔軟です。数値、カスタムオブジェクト、または他のArrayListなど、任意のリストを管理するために使用できます!Javaの旅を続ける中で、ArrayListがあなたのプログラミングツールボックスの中で最も信頼できるツールの1つになることでしょう。
だから、続けて練習し、コーディングし、そして最も重要なのは、Javaで楽しむことを忘れないでください。誰しもが、次の大きなプロジェクトがArrayListを使って世界を変えるかもしれません - 1つのダイナミックリストごとに!
Credits: Image by storyset