Java 遍历列表集合性能问题
我有一个列表,当我遍历它时,这是一个编写代码的列表Java 遍历列表集合性能问题,java,arraylist,Java,Arraylist,我有一个列表,当我遍历它时,这是一个编写代码的列表 for (int i = 0; i < list.size (); i++) for (int i = 0,n = list.size (); i < n; i++) for(inti=0;i
for (int i = 0; i < list.size (); i++)
for (int i = 0,n = list.size (); i < n; i++)
for(inti=0;i
还有这个书写代码
for (int i = 0; i < list.size (); i++)
for (int i = 0,n = list.size (); i < n; i++)
for(inti=0,n=list.size();i
哪一个更好,为什么?既然您是在集合上循环,请使用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;
}
要在两个for循环中向Jean添加点,请执行以下操作:
for (int i = 0; i < list.size (); i++
for (int i = 0,n = list.size (); i < n; i++)
for(inti=0;i
让我们比较一下情况:
案例1:
如果不修改列表项,即不进行频繁的添加和删除,则第二个for循环更好,因为您获取列表的大小并将其放入变量中进行比较。而在第一个循环中,每次都必须计算列表的大小。
案例二:
如果要频繁更改列表项(插入和删除更多),则固定列表的大小不是一个好主意。必须通过size()动态计算列表的大小每次函数。因此,在这种情况下,第一个for循环更好。如果要使用第二个for循环,则在列表中进行更改后,重新计算列表的大小,并再次存储在n中,这是一种开销。如果使用ArrayList,您的问题本质上是重复的,因为i是最快的方法。如果使用LinkedList,则riter是最快的方法。