1. ホーム

[解決済み】JavaのArrayListのコピー

2022-04-01 19:15:54

質問

私は ArrayList l1 をサイズ 10 で作成します。私は l1 を新しいリスト参照型 l2 . ウィル l1l2 は、同じ ArrayList オブジェクトを作成しますか?それとも、コピーされた ArrayList オブジェクトに割り当てられた l2 ?

を使用する場合 l2 を参照し、リストオブジェクトを更新すると、その変更が l1 の参照タイプもあります。

例えば

List<Integer> l1 = new ArrayList<Integer>();
for (int i = 1; i <= 10; i++) {
    l1.add(i);
}

List l2 = l1;
l2.clear();

リストオブジェクトのコピーを新しい参照変数に割り当てるには、2つのリストオブジェクトを作成し、古いものから新しいものへのコレクションのコピーを行う以外に方法はないのでしょうか?

どのように解決するのですか?

はい。 l1 (参照である)から l2 . これらは両方とも同じオブジェクトを参照することになります。

浅いコピーを作成するのはとても簡単ですが。

List<Integer> newList = new ArrayList<>(oldList);

(あくまで一例です)