KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Why is list.size()>0 slower than list.isEmpty() in Java? On other words why isEmpty() is preferable over size()>0 ? When I look at the implementation in ArrayList , then it looks like the speed should be the same: 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 <tt>true</tt> if this list contains no elements. * * @return <tt>true</tt> if this list contains no elements */ public boolean isEmpty() { return size == 0; } If we just write a simple program to get the time take by both the methods, that case size() will take more isEmpty() in all cases, why this so? Here is my 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); } } Here eTime-sTime>eeTime-eTime in all cases. Why?
Tags (comma-separated)
Save Edits
Cancel