Java ArrayList
ArrayList クラスは動的に変更できる配列であり、通常の配列との違いは固定サイズの制限がないことで、要素を追加または削除できます。
ArrayList は AbstractList を継承し、List インターフェースを実装しています。

ArrayList クラスは java.util パッケージにあり、使用前にそれをインポートする必要があります。構文は次のとおりです:
import java.util.ArrayList; // 引入 ArrayList 类 ArrayList<E> objectName =new ArrayList<>(); // 初始化
- E: ジェネリック型データ。objectName のデータ型を設定するために使用します。参照型データのみ可能です。
- objectName: オブジェクト名。
ArrayList は配列キューであり、追加、削除、変更、走査などの関連機能を提供します。
要素の追加
ArrayList クラスには便利なメソッドが多数用意されており、ArrayList に要素を追加するには add() メソッドを使用できます:
例
public class サンプルTest {
public static void main(String[] args) {
ArrayList<String> sites = new ArrayList<String>();
sites.add("Google");
sites.add("サンプル");
sites.add("Taobao");
sites.add("Weibo");
System.out.println(sites);
}
}
上記の例を実行すると、出力結果は次のようになります:
[Google, サンプル, Taobao, Weibo]
要素へのアクセス
ArrayList 内の要素にアクセスするには、get() メソッドを使用できます:
例
public class サンプルTest {
public static void main(String[] args) {
ArrayList<String> sites = new ArrayList<String>();
sites.add("Google");
sites.add("サンプル");
sites.add("Taobao");
sites.add("Weibo");
System.out.println(sites.get(1)); // 2番目の要素にアクセス
}
}
注意:配列のインデックス値は 0 から始まります。
上記の例を実行すると、出力結果は次のようになります:
サンプル
要素の変更
ArrayList 内の要素を変更する場合、set() メソッドを使用できます。set(int index, E element) メソッドの最初のパラメータはインデックス(index)で、置き換える要素の位置を示し、2番目のパラメータは新しい要素(element)で、設定する新しい値を示します:
例
public class サンプルTest {
public static void main(String[] args) {
ArrayList<String> sites = new ArrayList<String>();
sites.add("Google");
sites.add("サンプル");
sites.add("Taobao");
sites.add("Weibo");
sites.set(2, "Wiki"); // 最初のパラメータはインデックス位置、2番目は変更する値
System.out.println(sites);
}
}
上記の例を実行すると、出力結果は次のようになります:
[Google, サンプル, Wiki, Weibo]
要素の削除
ArrayList 内の要素を削除するには、remove() メソッドを使用できます:
例
public class サンプルTest {
public static void main(String[] args) {
ArrayList<String> sites = new ArrayList<String>();
sites.add("Google");
sites.add("サンプル");
sites.add("Taobao");
sites.add("Weibo");
sites.remove(3); // 4番目の要素を削除
System.out.println(sites);
}
}
上記の例を実行すると、出力結果は次のようになります:
[Google, サンプル, Taobao]
サイズの計算
ArrayList 内の要素数を計算するには、size() メソッドを使用できます:
例
public class サンプルTest {
public static void main(String[] args) {
ArrayList<String> sites = new ArrayList<String>();
sites.add("Google");
sites.add("サンプル");
sites.add("Taobao");
sites.add("Weibo");
System.out.println(sites.size());
}
}
上記の例を実行すると、出力結果は次のようになります:
4
配列リストの反復
for を使用して配列リスト内の要素を反復処理できます:
例
public class サンプルTest {
public static void main(String[] args) {
ArrayList<String> sites = new ArrayList<String>();
sites.add("Google");
sites.add("サンプル");
sites.add("Taobao");
sites.add("Weibo");
for (int i = 0; i < sites.size(); i++) {
System.out.println(sites.get(i));
}
}
}
上記の例を実行すると、出力結果は次のようになります:
Google サンプル Taobao Weibo
for-each を使用して要素を反復処理することもできます:
例
public class サンプルTest {
public static void main(String[] args) {
ArrayList<String> sites = new ArrayList<String>();
sites.add("Google");
sites.add("サンプル");
sites.add("Taobao");
sites.add("Weibo");
for (String i : sites) {
System.out.println(i);
}
}
}
上記の例を実行すると、出力結果は次のようになります:
Google サンプル Taobao Weibo
その他の参照型
ArrayList 内の要素は実際にはオブジェクトであり、上記の例では、配列リストの要素はすべて String 型の文字列です。
他の型を格納したい場合、<E> は参照型データのみ使用できるため、基本型のラッパークラスを使用する必要があります。
基本型に対応するラッパークラスの表は次のとおりです:
| 基本型 | 参照型 |
|---|---|
| boolean | Boolean |
| byte | Byte |
| short | Short |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |
| char | Character |
さらに、BigInteger、BigDecimal は高精度の演算に使用され、BigInteger は任意精度の整数をサポートします。これらも参照型ですが、対応する基本型はありません。
ArrayList<Integer> li=new ArrayList<>(); // 存放整数元素 ArrayList<Character> li=new ArrayList<>(); // 存放字符元素
次の例では、ArrayList を使用して数値を格納します(Integer 型を使用):
例
public class サンプルTest {
public static void main(String[] args) {
ArrayList<Integer> myNumbers = new ArrayList<Integer>();
myNumbers.add(10);
myNumbers.add(15);
myNumbers.add(20);
myNumbers.add(25);
for (int i : myNumbers) {
System.out.println(i);
}
}
}
上記の例を実行すると、出力結果は次のようになります:
10 15 20 25
ArrayListのソート
Collections クラスも非常に便利なクラスで、java.util パッケージにあります。提供される sort() メソッドは、文字または数字のリストをソートできます。
次の例では、アルファベットをソートします:
例
import java.util.Collections; // Collections クラスをインポート
public class サンプルTest {
public static void main(String[] args) {
ArrayList<String> sites = new ArrayList<String>();
sites.add("Taobao");
sites.add("Wiki");
sites.add("サンプル");
sites.add("Weibo");
sites.add("Google");
Collections.sort(sites); // アルファベットのソート
for (String i : sites) {
System.out.println(i);
}
}
}
上記の例を実行すると、出力結果は次のようになります:
Google サンプル Taobao Weibo Wiki
次の例では、数字をソートします:
例
import java.util.Collections; // Collections クラスをインポート
public class サンプルTest {
public static void main(String[] args) {
ArrayList<Integer> myNumbers = new ArrayList<Integer>();
myNumbers.add(33);
myNumbers.add(15);
myNumbers.add(20);
myNumbers.add(34);
myNumbers.add(8);
myNumbers.add(12);
Collections.sort(myNumbers); // 数字のソート
for (int i : myNumbers) {
System.out.println(i);
}
}
}
上記の例を実行すると、出力結果は次のようになります:
8 12 15 20 33 34
Java ArrayList メソッド
Java ArrayList のよく使われるメソッドの一覧は次のとおりです:
| メソッド | 説明 |
|---|---|
| add() | 指定した位置の arraylist に要素を挿入します |
| addAll() | コレクション内のすべての要素を arraylist に追加します |
| clear() | arraylist 内のすべての要素を削除します |
| clone() | arraylist のコピーを作成します |
| contains() | 要素が arraylist 内にあるかどうかを判定します |
| get() | インデックス値を使用して arraylist 内の要素を取得します |
| indexOf() | arraylist 内の要素のインデックス値を返します |
| removeAll() | 指定したコレクション内に存在する arraylist 内のすべての要素を削除します |
| remove() | arraylist 内の単一の要素を削除します |
| size() | arraylist 内の要素数を返します |
| isEmpty() | arraylist が空かどうかを判定します |
| subList() | arraylist の一部の要素を切り出します |
| set() | arraylist 内の指定したインデックスの要素を置き換えます |
| sort() | arraylist の要素をソートします |
| toArray() | arraylist を配列に変換します |
| toString() | arraylist を文字列に変換します |
| ensureCapacity() | 指定した容量サイズの arraylist を設定します |
| lastIndexOf() | 指定した要素が arraylist 内で最後に出現する位置を返します |
| retainAll() | 指定したコレクションにも存在する arraylist 内の要素を保持します |
| containsAll() | arraylist が指定したコレクション内のすべての要素を含むかどうかを確認します |
| trimToSize() | arraylist の容量を配列内の要素数に調整します |
| removeRange() | arraylist 内の指定したインデックス間に存在する要素を削除します |
| replaceAll() | 指定された操作内容で配列内の各要素を置き換えます |
| removeIf() | 特定の条件を満たすすべての arraylist 要素を削除します |
| forEach() | arraylist 内の各要素を走査し、特定の操作を実行します |
その他の API メソッドは次を参照できます:https://www.example.com/manual/jdk11api/java.base/java/util/ArrayList.html
その他の拡張
Java コレクションフレームワーク