I have read so many article as on difference between isEmpty()
and 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 useisEmpty()
andsize()
function for checking ifcollection
isempty
or not?Can any one explain this, using code or other way(Diagrams,graphs etc) so that any beginner can understand easily?
Basically I had found that
.size()
can be O(1) or O(N), depending on thedata structure
;.isEmpty()
is never O(N).The top reasons for using isEmpty rather than size would be:
Detailed explanation here
++ same question asked here
It might be that some collections just use
size()==0
inside theirisEmpty()
method, but that doesn't mean that they all do. The default implementation ofisEmpty()
just checks whethersize() == 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:For this class, you'd certainly want to use
isEmpty()
rather thansize() == 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.)