Java で ArrayList をコピーする
- ArrayList を別の ArrayList のコンストラクタに渡して別の ArrayList にコピーする
-
addAll()
関数を使用して ArrayList を別のものにコピーする -
Java 8 の
Stream
を用いた ArrayList のコピーする -
clone()
メソッドを用いて ArrayList を別のものにコピーする
この記事では、Java で ArrayList を別の ArrayList にコピーする 4つの方法を紹介します。どの例でも同じ要素を使って、異なるメソッドを使って ArrayList をコピーします。
ArrayList を別の ArrayList のコンストラクタに渡して別の ArrayList にコピーする
Java における ArrayList は、3 種類のコンストラクタを持つことができます。空のコンストラクタで ArrayList オブジェクトを作成し、初期サイズで作成する方法と、コレクションの要素を使って ArrayList を作成する方法があります。
ここでは 3つ目のタイプのコンストラクタを用いて ArrayList names1
を作成し、ランダムな名前を追加します。次に、新しい ArrayList names2
を作成して names1
の要素をコピーし、コンストラクタ new ArrayList<>(names1)
に names1
を渡します。
最後に、各要素を表示する forEach
を用いて names2
の ArrayList 全体を出力します。
import java.util.ArrayList;
public class CopyArrayList {
public static void main(String[] args) {
ArrayList<String> names1 = new ArrayList<>();
names1.add("Alan");
names1.add("Alex");
names1.add("Bob");
names1.add("Bryan");
names1.add("Cathy");
names1.add("Drake");
ArrayList<String> names2 = new ArrayList<>(names1);
names2.forEach(System.out::println);
}
}
出力:
Alan
Alex
Bob
Bryan
Cathy
Drake
addAll()
関数を使用して ArrayList を別のものにコピーする
この関数は Collection
を引数にとり、既存の要素があればその要素を ArrayList の末尾に追加しあす。ArrayList は Collection
を実装しており、addAll()
メソッドの引数に ArrayList names1
を用いることができます。
names1
にはいくつかの要素が含まれており、新しく作成された空の ArrayList names2
にコピーされています。これは names2.addAll(names1)
によって行われます。出力は names2
にコピーされた要素を示します。
import java.util.ArrayList;
public class CopyArrayList {
public static void main(String[] args) {
ArrayList<String> names1 = new ArrayList<>();
names1.add("Alan");
names1.add("Alex");
names1.add("Bob");
names1.add("Bryan");
names1.add("Cathy");
names1.add("Drake");
ArrayList<String> names2 = new ArrayList<>();
names2.addAll(names1);
names2.forEach(System.out::println);
}
}
出力:
Alan
Alex
Bob
Bryan
Cathy
Drake
Java 8 の Stream
を用いた ArrayList のコピーする
この例では、Java 8 で導入された Stream API
を利用します。要素を含む ArrayList を作成し、names1
を指定して stream()
メソッドを呼び出し、collect()
メソッドのようにストリームを収集して Collectors.toList()
を用いてリストに折り畳むストリームメソッドを利用します。
このストリームはリストを返しますが、これを ArrayList にキャストする必要があります。
import java.util.ArrayList;
import java.util.stream.Collectors;
public class CopyArrayList {
public static void main(String[] args) {
ArrayList<String> names1 = new ArrayList<>();
names1.add("Alan");
names1.add("Alex");
names1.add("Bob");
names1.add("Bryan");
names1.add("Cathy");
names1.add("Drake");
ArrayList<String> names2 = (ArrayList<String>) names1.stream().collect(Collectors.toList());
names2.forEach(System.out::println);
}
}
出力:
Alan
Alex
Bob
Bryan
Cathy
Drake
clone()
メソッドを用いて ArrayList を別のものにコピーする
最後のメソッドはネイティブの ArrayList
メソッドである clone()
メソッドです。これは要素をコピーして新しいリストを返します。要素を含む ArrayList を作成し、clone()
メソッドを呼び出す。最後に、返された結果を ArrayList<String>
にキャストして、目的の結果を取得します。
import java.util.ArrayList;
public class CopyArrayList {
public static void main(String[] args) {
ArrayList<String> names1 = new ArrayList<>();
names1.add("Alan");
names1.add("Alex");
names1.add("Bob");
names1.add("Bryan");
names1.add("Cathy");
names1.add("Drake");
ArrayList<String> names2 = (ArrayList<String>) names1.clone();
names2.forEach(System.out::println);
}
}
出力:
Alan
Alex
Bob
Bryan
Cathy
Drake
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn