You should absolutely use
isEmpty(). Computing the
size() of an arbitrary list could be expensive. Even validating whether it has any elements can be expensive, of course, but there’s no optimization for
size() which can’t also make
isEmpty() faster, whereas the reverse is not the case.
For example, suppose you had a linked list structure which didn’t cache the size (whereas
LinkedList<E> does). Then
size() would become an O(N) operation, whereas
isEmpty() would still be
Additionally of course, using
isEmpty() states what you’re actually interested in more clearly.