1. ArrayListの概要

このクイックチュートリアルでは、すでに初期化されているArrayListに複数のアイテムを追加する方法を示します。

ArrayList の使用方法の概要については、こちらの記事を参照してください。

2. AddAll

まず、ArrayListに複数のアイテムを追加する簡単な方法を紹介します。

まず、 addAll()を使用します。これは、引数としてコレクションを取ります。

List<Integer> anotherList = Arrays.asList(5, 12, 9, 3, 15, 88);
list.addAll(anotherList);

最初のリストに追加された要素は、anotherListの要素と同じオブジェクトを参照することに注意してください。

そのため、これらの要素の1つで行われたすべての修正は、両方のリストに影響します。

3. Collections.addAll

Collections クラスは、コレクションを操作したり、コレクションを返したりする静的メソッドのみで構成されています。

その1つがaddAllです。これには宛先リストが必要であり、追加する項目は個別に指定することも、配列として指定することもできます。

これは、個々の要素でそれを使用する方法の例です。

List<Integer> list = new ArrayList<>();
Collections.addAll(list, 1, 2, 3, 4, 5);

もう1つは、2つの配列を使用した操作の例です。

List<Integer> list = new ArrayList<>();
Integer[] otherList = new Integer[] {1, 2, 3, 4, 5};
Collections.addAll(list, otherList);

上記のセクションで説明した方法と同様に、ここでの両方のリストの内容は同じオブジェクトを参照します。

4. Java8の使用

このバージョンのJavaは、新しいツールを追加することで可能性を広げます。 次の例で検討するのは、Streamです。

List<Integer> source = ...;
List<Integer> target = ...;

source.stream()
  .forEachOrdered(target::add);

この方法の主な利点は、スキップとフィルターを使用できることです。 次の例では、最初の要素をスキップします。

source.stream()
  .skip(1)
  .forEachOrdered(target::add);

必要に応じて要素をフィルタリングすることが可能です。 たとえば、整数値:

source.stream()
  .filter(i -> i > 10)
  .forEachOrdered(target::add);

最後に、ヌルセーフな方法で作業したいシナリオがあります。 それらについては、オプションを使用できます。

Optional.ofNullable(source).ifPresent(target::addAll)

上記の例では、メソッドaddAllによってsourceからtargetに要素を追加しています。

5. 結論

この記事では、すでに初期化されているArrayListに複数のアイテムを追加するさまざまな方法について説明しました。

いつものように、コードサンプルはGitHubにあります。