Я хава список, когда я пересек его, это написание кодаTraverse проблемы производительности сбора Список
for (int i = 0; i < list.size(); i++)
и это написание кода
for (int i = 0,n = list.size(); i < n; i++)
Что лучше, почему?
Я хава список, когда я пересек его, это написание кодаTraverse проблемы производительности сбора Список
for (int i = 0; i < list.size(); i++)
и это написание кода
for (int i = 0,n = list.size(); i < n; i++)
Что лучше, почему?
Чтобы добавить точку к Жану, в двух для петель:
for (int i = 0; i < list.size(); i++
for (int i = 0,n = list.size(); i < n; i++)
Позволяет сравнить ситуации:
case1:
Если элементы списка не будут изменяться, то есть не частое добавление и удаление, то второй цикл будет лучше, потому что вы принимаете размер список и поместить его в переменную и сравнить. Если в первом цикле каждый раз нужно вычислить размер списка.
Вариант 2:
Если элементы списка будут часто меняться (вставка и удаление более), то размер списка фиксированы не является хорошей идеей. Размер списка должен динамически вычисляться через функцию size() каждый раз. Таким образом, в этом случае первый цикл for лучше. Если вы хотите использовать второй цикл for, после внесения изменений в список, пересчитайте размер списка и снова сохраните в n, что является накладными расходами.
Поскольку вы перекручивание по коллекции, используйте для-каждый ...
for(Object o : list)
{
//treatment...
}
Что касается разницы между теми, кто вас в курсе, я уверен, что виртуальная машина будет оптимизировать его для вас в любом случае.
Это не имеет никакого значения. list.size()
не нужно рассчитать
/**
* Returns the number of elements in this list.
*
* @return the number of elements in this list
*/
public int size() {
return size;
}
Если вы используете ArrayList, fori - самый быстрый метод. Если вы используете LinkedList, foriter является самым быстрым методом. – isea
Ваш вопрос по существу является дубликатом http://stackoverflow.com/questions/6093537/for-loop-optimization –