Возникают проблемы с очисткой arrayList - PullRequest
0 голосов
/ 05 мая 2011

У меня есть 2d arraylist, и внутри цикла я хочу проанализировать каждый 1d список 2d списка во временный список. Также я хочу, чтобы в конце каждой итерации я хотел очистить этот временный список, чтобы перейти к следующему шагу, чтобы проанализировать первый список моего начального 2d.

Код следующий:

 List<List<Integer>> conVert = new ArrayList<List<Integer>>();
 List<Integer> temp = new ArrayList<Integer>();
 for (int i = 0; i<conVert.size(); i++){
    temp.addAll(conVert.get(i));
    Collections.sort(temp);
    System.out.println(temp);

    for(int j = 0; j<temp.size(); j++){
        // several commands
    }
    temp.clear();
 }

У меня есть несколько команд, которые не работают должным образом из-за того, что темп не очищается должным образом. Любая идея? Когда я начинаю понимать, у меня проблемы с conVert,

1 Ответ

0 голосов
/ 05 мая 2011

Вы можете использовать совершенно новый List вместо очистки "старого". Зачем вам нужен пустой List после цикла for? Ничего не получится, если использовать такие базовые структуры данных, и это может даже иметь обратный эффект.

Когда ваш List выходит из области видимости, он будет собирать мусор практически бесплатно, в то время как для его явной очистки требуются некоторые ресурсы.

РЕДАКТИРОВАТЬ : Полагаю, в этом случае лучше позволить коду говорить за себя:

 List<List<Integer>> conVert = new ArrayList<List<Integer>>();

 for (int i = 0; i<conVert.size(); i++){
    List<Integer> temp = new ArrayList<Integer>();
    temp.addAll(conVert.get(i));
    Collections.sort(temp);
    System.out.println(temp);

    for(int j = 0; j<temp.size(); j++){
        // several commands
    }
}
...