Web サービスから取り込まれたがありますList<SomeBean>
。そのリストの内容を同じタイプの空のリストにコピー/複製したいです。リストのコピーを Google で検索すると、Collections.copy()
メソッドを使用するように勧められました。私が見たすべての例では、コピーを実行するには、宛先リストに正確な数の項目が含まれている必要がありました。
私が使用しているリストは Web サービスを通じて作成され、数百のオブジェクトが含まれているため、上記の手法は使用できません。 それとも、使い方が間違っているのでしょうか??!! とにかく、これを機能させるために、次のようなことを試みましたが、それでも という結果になりましたIndexOutOfBoundsException
。
List<SomeBean> wsList = app.allInOne(template);
List<SomeBean> wsListCopy=new ArrayList<SomeBean>(wsList.size());
Collections.copy(wsListCopy,wsList);
System.out.println(wsListCopy.size());
を使用しようとしましたwsListCopy=wsList.subList(0, wsList.size())
が、コードの後半で が表示されましたConcurrentAccessException
。試行錯誤です。:)
とにかく、私の質問は簡単です。リストの内容全体を別のリストにコピーするにはどうすればいいですか?もちろん、反復を通じてではありません。
ベストアンサー1
これを使用してください:
List<SomeBean> newList = new ArrayList<SomeBean>(otherList);
otherList
注: まだスレッドセーフではありません。別のスレッドから変更する場合は、それをotherList
(さらにはnewList
)CopyOnWriteArrayList
例えば、次のようなロックプリミティブを使用する。再入可能読み取り書き込みロック同時にアクセスされるリストへの読み取り/書き込みアクセスをシリアル化します。