1.ArrayListクラス

今日はクラスを探索してみますArrayListこれは、コレクションとして知られるいくつかのクラスのうちの最初のクラスです。Java では、コレクションは非常に幅広く便利なトピックであるため、CodeGym のクエスト全体がコレクションに当てられます。

コレクションの構造とそのすべてのニュアンスを完全に理解するには、まず OOP、インターフェイス、継承、マルチスレッドの基本などを学ぶ必要があります。

したがって、今日は最も単純な種類のコレクションについて説明します。ただし、使い方や仕組みを理解するには十分なレベルです。さて、ArrayListコレクションをご紹介します。

裏話

少し背景から始めます。プログラマーは配列の 1 つの側面、つまりサイズを変更できないという事実を本当に好みませんでした。さらに 3 つの要素を配列に保存する必要があるが、空のセルが 1 つしかない場合はどうすればよいでしょうか?

配列のスペース制限に対する唯一の解決策は、保存する必要があるすべての要素を収容するために非常に大きな配列を作成することでした。しかし、これは通常メモリの無駄でした。通常、配列に 2 つまたは 3 つの要素が含まれているが、100 個の要素を格納する必要がある可能性がわずかでもある場合は、100 個を格納できる容量を持つ配列を作成する必要があります。

では、プログラマーは何を思いついたのでしょうか? 彼らはArrayList、クラスと同じ働きをするクラスを作成しましたArrayが、サイズは変更可能でした。

ArrayList クラス

クラスの名前は、ArrayListArray + List という 2 つの単語で構成されます。Arrayは配列であり、Listはリストです。

ArrayListオブジェクトには通常の要素配列が含まれています。から要素を読み取るとArrayList、オブジェクトは内部配列から要素を取得します。要素を書き込むと、内部配列に要素が書き込まれます。

ArrayList クラスには、配列の持つ欠点がすべてありません。それは以下の方法を知っています:

  • 特定のタイプの要素を保存する
  • リストのサイズを動的に変更する
  • リストの最後に要素を追加します
  • リストの先頭または途中に要素を挿入します
  • リスト内の任意の場所から要素を削除します

詳細については、以下を参照してください。


2.ArrayListオブジェクトの作成

オブジェクトを作成するにはArrayList、次のようなコードを記述する必要があります。

ArrayList<TypeParameter> name = new ArrayList<TypeParameter>();

ここでArrayList、 はコレクションのタイプ/クラス、TypeParameterはコレクションに格納されている要素のタイプArrayList、は変数nameの名前ですArrayList<TypeParameter>

変数nameにはジェネリック型があります。これは 2 つのタイプで構成されます。最初にコレクションのタイプが示され、次に山かっこを使用してコレクションに格納されている要素のタイプが示されます。

例:

コード 説明
ArrayList<Integer> list = new ArrayList<Integer>();
整数のリスト
ArrayList<String> list = new ArrayList<String>();
文字列のリスト
ArrayList<Double> list = new ArrayList<Double>();
実数のリスト

配列とは異なり、コレクションにはプリミティブ型は保存できず、参照型のみが保存されます。したがって、 のコレクションが必要な場合はintInteger代わりにラッパー クラスを使用してください。


3. での操作ArrayList

最初は、新しく作成されたリストには要素が含まれていないため、長さはゼロです。リストに要素を 1 つ追加すると、その長さは 1 増加します。追加した要素を削除すると、長さはゼロに戻ります。

次の表では、クラスのメソッドについて詳しく説明しますArrayList

メソッド 説明
void add(Type value)
渡された要素をリストに追加します
void add(int index, Type value)
リスト内の特定の場所に要素を追加します。
Type get(int index)
インデックスが次の要素を返します。index
void set(int index, Type value)
valueインデックスが次の要素に代入します。index
Type remove(int index)
インデックスが である要素を削除しますindex。削除された要素を返します。
Type remove(Type value)
メソッドに渡す要素を削除します。このような要素が複数ある場合は、最初の要素が削除されます。
void clear()
リストをクリアします。つまり、リストからすべての要素を削除します。
boolean contains(Type value)
リストに が含まれているかどうかを確認しますvalue
boolean isEmpty()
リストが空かどうかを確認します。言い換えれば、リストの長さがゼロかどうかです。
int size()
リストのサイズ、つまりリスト内の要素の数を返します。
Type[] toArray(Type[] array)
リストの要素を含む配列を返します。
配列をメソッドに渡す必要があります。

これらのメソッドを使用すると、要素の交換、要素の追加、要素の削除など、リストに対して行うことのほとんどすべてを行うことができます。1 つのコマンドでリストをクリアしたり、リストを配列に変換したりすることもできます。



ArrayList4.との比較Array

ArrayList比較と配列を避けることはできないと思います。

配列を使用して実行できるアクションは 4 つだけです。

  • 配列を作成する
  • インデックスで要素を取得する
  • 要素をインデックスで設定する
  • 配列の長さを取得する

配列とに適用されるこれらの操作は次のとおりですArrayList

配列 配列リスト
String[] array = new String[10];
ArrayList<String> list = new  ArrayList<String>();
String s = array[0];
String s = list.get(0);
array[0] = "Bye";
list.set(0, "Bye");
int count = array.length;
int count = list.size();

ArrayListの動作と配列の動作を比較してみましょう。たとえば、「キーボードから 10 個の文字列を読み取り、逆順に画面に表示する」というタスクを実装してみましょう。

配列の使用 ArrayList の使用
Scanner console = new Scanner(System.in);

// Read strings from the keyboard
String[] list = new String[10];

for (int i = 0; i < list.length; i++)
{
    String s = console.nextLine();
    list[i] = s;
}

// Display the contents of the array on the screen
for (int i = 0; i < list.length; i++)
{
    int j = list.length - i - 1;
    System.out.println(list[j]);
}
Scanner console = new Scanner(System.in);

// Read strings from the keyboard
ArrayList<String> list = new ArrayList<String>();

for (int i = 0; i < 10; i++)
{
    String s = console.nextLine();
    list.add(s);
}

// Display the contents of the collection on the screen
for (int i = 0; i < list.size(); i++)
{
    int j = list.size() - i - 1;
    System.out.println(list.get(j));
}

このアナロジーは明らかです。配列の場合は、すべてがどういうわけか短く、明確になります。しかしArrayList、それも難しいことではありません。要素を取得するには、get()メソッドを使用します。要素、メソッドを変更するにはset()。リストの長さを取得するsize()メソッド。

では、なぜプログラマーはこのArrayListクラスを使用するのでしょうか?

もちろん、重要なのは、通常の配列にはない他のすべてのメソッドです。

  • リストに要素を追加する
  • リストの中央に要素を追加します
  • リスト内の要素を検索する
  • リストからの要素の削除