我哈瓦一个列表中,当我走过它,这写代码遍历List集合性能问题
for (int i = 0; i < list.size(); i++)
这写代码
for (int i = 0,n = list.size(); i < n; i++)
哪个更好,为什么?
我哈瓦一个列表中,当我走过它,这写代码遍历List集合性能问题
for (int i = 0; i < list.size(); i++)
这写代码
for (int i = 0,n = list.size(); i < n; i++)
哪个更好,为什么?
要添加点吉恩,在两个for循环:
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中,这是一个开销。
既然你遍历集合,使用的for-each ...
for(Object o : list)
{
//treatment...
}
至于那些你贴的区别,我敢肯定,JVM将无论如何优化它。
它没有任何区别。 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 2014-09-11 02:18:40
你的问题本质上是http://stackoverflow.com/questions/6093537/for-loop-optimization – 2014-09-11 02:03:25