为什么list.size()> 0比Java中的list.isEmpty()慢?换句话说,为什么isEmpty()比size()> 0更好?
当我看看在ArrayList中的实现,那么它看起来像速度应该是一样的:
ArrayList.size()
/**
* Returns the number of elements in this list.
*
* @return the number of elements in this list
*/
public int size() {
return size;
}
ArrayList.isEmpty()
/**
* Returns true if this list contains no elements.
*
* @return true if this list contains no elements
*/
public boolean isEmpty() {
return size == 0;
}
如果我们只是写一个简单的程序来获得两种方法的时间,那case case()将在所有情况下采取更多的isEmpty(),为什么这样?
这里是我的TestCode;
import java.util.List;
import java.util.Vector;
public class Main {
public static void main(String[] args) {
List l=new Vector();
int i=0;
for(i=0;i<10000;i++){
l.add(new Integer(i).toString());
}
System.out.println(i);
Long sTime=System.nanoTime();
l.size();
Long eTime=System.nanoTime();
l.isEmpty();
Long eeTime=System.nanoTime();
System.out.println(eTime-sTime);
System.out.println(eeTime-eTime);
}
}
这里eTime-sTime> eeTime-eTime。为什么?