Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

リスト内の配列について

リストの中に配列を入れたいのですがうまくいかないので教えていただきたいです
まずは下のプログラムを見てほしいのですが
        ArrayList<int[]> arrays = new ArrayList<>();
    int[] array;
    public void test() {
        array = new int[3];
        array[0]=0;
        array[1]=1;
        array[2]=2;
        arrays.add(array);
        
        array[0]=10;
        array[1]=11;
        array[2]=12;
        arrays.add(array);
        
        for(int i=0;i<3;i++) {
            System.out.println(arrays.get(0)[i]);
        }
        for(int i=0;i<3;i++) {
            System.out.println(arrays.get(1)[i]);
        }
    }

このようなメソッドを作ってarraysの0番目と1番目の内容を出力してみたところ、実行結果でそれぞれ10,11,12 10,11,12と同じになってしまいました
変数で同じようなことをしたときはうまくいったのですが配列ではなぜかうまくいかないです
arrayという配列は使い回せるうえで実行結果をそれぞれ0,1,2  10,11,12のようにする方法はありますでしょうか
初学者ゆえわかりにくい質問になってしまい申し訳ないですがよろしくおねがいします

1

回答

635

閲覧

1件の回答

評価

0

 「トラックに荷物1を乗せた」と記録
 「トラックに荷物2を乗せた」と記録

トラック(arrays)には荷物1と荷物2が乗っている

 箱1に荷物1を入れた
 「トラックに箱1を乗せた」と記録
 箱1の荷物1を取り出して荷物2を入れた
 「トラックに箱1を乗せた」と記録

記録(add)は2回あるが、乗っているのは同じ箱1(array)で、しかも中身は荷物2に入れ替えられている
2回目は箱自体別のものにしないといけない

回答する

ログインしていません。

ログインしなくても回答はできますが、ログインすると、質問・回答の管理、更新があった場合のメールでの通知を受けることができます。 アカウントをお持ちでない方は会員登録を行ってください。

ユーザ名匿名