新しいリスト オブジェクトを作成しようとしています。新しいオブジェクトを古い既存のオブジェクトに設定しました。
List<string> names = new List<string>();
names = olderList;
私が抱えている問題は、olderListが変更され、名前も変更されると、名前リストがolderListを指すことです。foreach で値をコピーしようとしましたが、olderList を参照して同じことをしています。
Javaで割り当てを行うときは、コンテンツではなく参照をコピーします。したがって、名前はolderListと同じメモリアドレスを指します。
すべての値をコピーするときは、同じことを行います。名前リストに、olderListに格納されている各文字列への別の参照を割り当てます。
問題を解決する可能性のあるアイデアは、foreachを使用することですが、各要素を追加する代わりに、古い文字列のコピーである新しい文字列を作成します。これは次のようになります。
names=new List<String>();
foreach (String s: olderList) {
names.add(new String(s));
}
Oracleのリファレンスサイトで、使用したコンストラクタとその意味を確認してください。
新しいリストを作成し、すべての要素を複製する必要があります。電話すれば
olderList.clone()
浅いコピー (つまり、最初のリストのオブジェクトへの参照を含む新しいリスト) が得られます。次のようにする必要があります。
for(String name : olderList){
newList.add(name.clone());
}
参照: Java api Cloneable、Object.clone()