Pourquoi est - list.size()>0
plus lent que l' list.isEmpty()
en Java? En d'autres termes pourquoi isEmpty()
est préférable à d' size()>0
?
Quand je regarde la mise en œuvre, en ArrayList
, il semblerait que la vitesse doit être la même:
Liste de tableaux.size()
/**
* Returns the number of elements in this list.
*
* @return the number of elements in this list
*/
public int size() {
return size;
}
Liste de tableaux.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;
}
Si nous suffit d'écrire un programme simple pour obtenir le temps de prendre par les deux méthodes, ce cas size()
prendra plus de isEmpty()
dans tous les cas, pourquoi donc?
Voici mon 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);
}
}
Ici, eTime-sTime>eeTime-eTime
dans tous les cas. Pourquoi?