This question already has an answer here:
- check if a collection is empty in java : Which is the best method 11 answers
- Why is list.size()>0 slower than list.isEmpty() in Java? 9 answers
I have read so many article as on difference between
size() > 0 for check that
collection is empty or not and found that
isEmpty() have perfomance over
size() but I could not understand easily why perfomance of
isEmpty() is good even though inside isEmpty() is only size == 0 ?
My questions are :
Can any one explain easily in which scenario
isEmpty()is faster as well as when to use
size()function for checking if
Can any one explain this, using code or other way(Diagrams,graphs etc) so that any beginner can understand easily?
It might be that some collections just use
size()==0 inside their
isEmpty() method, but that doesn't mean that they all do. The default implementation of
isEmpty() just checks whether
size() == 0, but a particular collection is free to override this with something else if it's more efficient.
Here's a nice example. The
ConcurrentSkipListSet documentation says:
Beware that, unlike in most collections, the size method is not a constant-time operation.
For this class, you'd certainly want to use
isEmpty() rather than
size() == 0.
(To understand why it's true for a skip list, you'd need to read up on how skip lists work, but do come back and ask another question about them if you want to know more.)