遍历List集合性能问题

时间:2014-09-11 02:00:57

标签: java arraylist

我有一个List,当我遍历它时,这个编写代码

for (int i = 0; i < list.size (); i++)

和这个编写代码

for (int i = 0,n = list.size (); i < n; i++) 

哪个更好,为什么?

3 个答案:

答案 0 :(得分:2)

由于您正在循环一个集合,请使用for-each ...

for(Object o : list)
{
    //treatment...
}

至于你发布的那些之间的区别,我很确定JVM会为你优化它。

答案 1 :(得分:0)

它没有任何区别。 list.size()无需计算

/**
 * Returns the number of elements in this list.
 *
 * @return the number of elements in this list
 */
public int size() {
    return size;
}

答案 2 :(得分:0)

在两个for循环中为Jean添加一个点:

for (int i = 0; i < list.size (); i++

for (int i = 0,n = list.size (); i < n; i++) 

让我们比较一下情况:
情况1:
如果列表项不会被修改,那就不经常添加和删除,那么第二个for循环更好,因为你获取列表的大小并将其放入变量并进行比较。而在第一个循环中,每次必须计算列表的大小。
情况2:
如果要经常更改列表项(插入和删除更多),则修复列表的大小不是一个好主意。必须每次通过size()函数动态计算列表的大小。所以在这种情况下,第一个for循环更好。如果你想使用第二个for循环,那么在列表中进行更改之后,重新计算列表的大小并再次存储在n中,这是一个开销。