2017-11-29 8 views
1

私は迷路を表す2D配列を持っており、ループ内でこの配列の状態を更新しています。更新が終わるたびに、2D配列をArrayListに追加します。私の問題は、ArrayList内のいずれかの状態にアクセスしようとするとき、常に2D配列の最終状態を示します。 2D配列を変更するとき、ArrayList内に格納されている以前の状態をすべて変更していますか?ArrayListから2D配列を取得する際の問題

List<int[][]> list; 
int[][] maze; 
int[][] temp = new int[maze.length][]; 
for(int i = 0; i < maze.length; i++) 
{ 
    temp[i] = new int[maze[i].length]; 
    System.arraycopy(maze[i], 0, temp[i], 0, maze[i].length); 
} 
list.add(temp); 

これは次のようになり

+0

_ "2D配列を変更するとき、ArrayList内に格納されている以前の状態もすべて変更していますか?" _ - はい – phflack

+0

ありがとう、それは多くの意味があります。 – tjulich

+0

回避策の回答を追加する – phflack

答えて

1

あなたが見つけてきたように、2次元配列を編集するあなたはこれを停止するには、ArrayListの

に入れたものを修正するには、データのコピーを一時的に2次元配列を追加してみてください追加する2次元配列に取って、メソッドとして追加してもいい、と迷路はオブジェクトの2D配列であれば、あなたのようにそれらのクローンを作成する必要があること

private void append(int[][] maze, List<int[][]> list) 
{ 
    //the above code 
} 

ノートに追加するリスト

+0

私はこれらの行に沿って何かを実装しようとします! – tjulich

関連する問題