JAVAコーディング
ArrayListとArray
2008年03月19日
JAVAにはArrayListとArrayがあるようです。どう違うのでしょう。
ソースを見ていると、ArrayListは2次元配列のように思えます。見よう見真似でコーディングしてみたのですが、困ったことがおこりました。
ArrayListの1要素の値更新ができないのです。参考にしたソースは、1次元配列から、ArrayListにAddしています。Addした後のArrayListの値を更新しようとしてもできないのです。1レコード(行)の削除や更新処理はできるのです。
仕方ないので、1次元配列の値を更新してからArrayListにAddすることにしました。
ところが、ArrayListはAddした1次元配列の値を参照で受け取っているようなのです。
1. 1次元配列Aに値を代入
2. ArrayList1にAdd
3. 1次元配列Aの値を変更
4. ArrayList2にAdd
という処理をしたのですが、先にAddしたArrayList1の値も変更されてしまいます。
ArrayList1の値はそのままに、ArrayList2の値だけを変更したかったのですが。
そこで、1次元配列もAとBを作成し、それぞれArrayList1、ArrayList2にAddしました。今度は思うように動作しました。
どうやらArrayListは2次元配列とは異なるようです。
ソースを見ていると、ArrayListは2次元配列のように思えます。見よう見真似でコーディングしてみたのですが、困ったことがおこりました。
ArrayListの1要素の値更新ができないのです。参考にしたソースは、1次元配列から、ArrayListにAddしています。Addした後のArrayListの値を更新しようとしてもできないのです。1レコード(行)の削除や更新処理はできるのです。
仕方ないので、1次元配列の値を更新してからArrayListにAddすることにしました。
ところが、ArrayListはAddした1次元配列の値を参照で受け取っているようなのです。
1. 1次元配列Aに値を代入
2. ArrayList1にAdd
3. 1次元配列Aの値を変更
4. ArrayList2にAdd
という処理をしたのですが、先にAddしたArrayList1の値も変更されてしまいます。
ArrayList1の値はそのままに、ArrayList2の値だけを変更したかったのですが。
そこで、1次元配列もAとBを作成し、それぞれArrayList1、ArrayList2にAddしました。今度は思うように動作しました。
どうやらArrayListは2次元配列とは異なるようです。
コメント