1

ArrayListがアイテムを失うだけの理由はありますか?整数を保持するArrayListsを保持するArrayListがあります。それぞれに約32個のアイテムがあります。後でArrayListを呼び出す必要があるときに、最後の項目を除いて項目が欠落しています。まだ32個のアイテムがありますが、空です。

[[], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [-16323110, -16688166, -14978279, -837220, -11002320, -4136419, -13118245, -5370572, -11382698, -13140399, -13754890, -8184649, -11711035, -11668025, -12910969, -11058211, -9974559, -9665946, -12513105, -14320755, -16332438, -7673092, -13016023, -15454286, -12413148, -9780316, -2553149, -3313219, -10953060, -940790, -11989718, -12189591]]

私は一度それを読むことができて、すべてがそこにあります...しかし、後で私がそれを再び呼ぶとき、それはなくなっています。私は何も削除していません。ここで何が起きてるの?

元のコードを投稿できませんが、ここにモックアップがあります。

private ArrayList<ArrayList<Integer>> myArray = new ArrayList<ArrayList<Integer>>();

private void makeArray() {
for(int i = 0; i<= _height - 1; i++) {
            ArrayList<Integer> row = new ArrayList<Integer>();
            for(int ii = 0; ii <= _width - 1; ii++) {
                row.add(ii);    
            }
            myArray.add(row);
        }
}

private void readArray() {
ArrayList<Integer> row = new ArrayList<Integer>();

            for(int a = 0; a <= _height - 1; a++) {
                row.clear();
                row = myArray.get(a);

                for(int aa = 0; aa <= _width - 1; aa++) {
                    int c = row.get(aa);
//stuff
                }
            }
}
4

1 に答える 1

5

あなたのコードを見てください:

private void readArray() {
    ArrayList<Integer> row = new ArrayList<Integer>();

    for(int a = 0; a <= _height - 1; a++) {
        row.clear();
        row = myArray.get(a);
        ...
    }
}

各反復の開始時ArrayListに、最後の反復で見ていたものをクリアしています。どうしてそうするか?

電話を切るだけで、row.clear()すべてがうまくいくと思います。より慣用的なものを使用することもお勧めします。

for(int a = 0; a < _height; a++) {

またはさらに良い:

for(int a = 0; a < myArray.size(); a++) {

またはさらに良い

for (ArrayList<Integer> row : myArray) {
    ...
}

(その場合、電話をかける必要はまったくありませんmyArray.get()!)

于 2012-09-11T21:59:40.540 に答える