概要 Javaで、配列をDeepCopyしListに追加する要件があったのでその時に試したサンプルコードをうpする。 DeepCopyの場合は面倒くさいことに新しいインスタンスに値を移す作業が必要になる。 クラスが保持するプロパティが多くなると更に面倒くさいことになる。 CommonsのBeanUtils#cloneBeanを利用してみた。 利用するにはクローンを作成するクラスには引数なしのコンストラクタが必要。 それがないとInstantiationExceptionが発生する。 クラス構成 DataObject内部にListを保持する。 さらに、DataObjectをListで宣言する。つまり、リストの中にリストを保持するようにする。 処理速度 BeanUtils#cloneBeanを利用しているためか処理時間は平均100ms new DataObject宣言すると平均5ms以下となる
![配列のShallowCopyとDeepCopyの実現方法 - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/2316f6b71e8f3b2de89f819de04517b105e8f35e/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9JUU5JTg1JThEJUU1JTg4JTk3JUUzJTgxJUFFU2hhbGxvd0NvcHklRTMlODElQThEZWVwQ29weSVFMyU4MSVBRSVFNSVBRSU5RiVFNyU4RiVCRSVFNiU5NiVCOSVFNiVCMyU5NSZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1jbGlwPWVsbGlwc2lzJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9YTE3ZmMxNzhlMzg3Zjc4NDE1ZGIzY2Q1MDNmMmYyMDU%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwZ3JycnImdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPWVhNzEzZDJkZjJlYTBjMTAwOTk3MDI0NjVjMGRjM2Yw%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3D38a903a4799a5f68545784f8626e92b2)