1. ホーム
  2. java

[解決済み] java.util.Listを別のjava.util.Listにコピーする方法

2022-05-08 09:36:15

質問

私は List<SomeBean> は、Webサービスから入力されます。そのリストの内容を、同じタイプの空のリストにコピー/クローンしたいのです。リストをコピーするために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 をコード後半に追加しました。ヒットアンドトライアルです :)

とにかく、私の質問は単純です。 リストの内容をすべて別のリストにコピーするにはどうすればよいですか? もちろん、反復ではありません。

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

これを使うだけです。

List<SomeBean> newList = new ArrayList<SomeBean>(otherList);

注:まだスレッドセーフではありません。 otherList を別のスレッドで使用する場合は、そのスレッドを otherList (さらに newList ) a CopyOnWriteArrayList のようなロックプリミティブを使用します。 リエントラントリードライトロック を使用して、同時にアクセスされるすべてのリストに対する読み取り/書き込みアクセスを直列化します。