があり、それを正確にコピーしたいと考えています。誰かが時間をかけて正しく作成しているという前提で、可能な場合はユーティリティ クラスを使用します。そのため、当然、コピー メソッドを含むクラスがArrayList
作成されます。Collections
次のような状況があるとします。
List<String> a = new ArrayList<String>();
a.add("a");
a.add("b");
a.add("c");
List<String> b = new ArrayList<String>(a.size());
Collections.copy(b,a);
これは基本的にb
を保持するには大きさが足りないと判断されるため失敗しますa
。b
のサイズが 0 であることはわかっていますが、これで十分な大きさになるはずですよね? 最初に を埋める必要がある場合b
、 はCollections.copy()
私の考えでは完全に役に立たない関数になります。では、コピー関数をプログラミングする以外に (今から実行します)、これを行う適切な方法はありますか?
ベストアンサー1
b
があります容量3つですが、サイズArrayList
0 です。 が何らかのバッファ容量を持っているという事実は実装の詳細です。これはList
インターフェースの一部ではないので、Collections.copy(List, List)
使用されません。 を特別なケースにするのは見苦しいでしょうArrayList
。
tddmonkey が示したように、コレクションを受け取る ArrayList コンストラクターを使用するのが、提供された例の方法です。
より複雑なシナリオ(実際のコードが含まれる可能性もある)の場合は、以下のコレクションを参照してください。グアバ役に立つ。