Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Google Guava isNullOrEmpty for collections

Tags:

java

guava

I see that Guava has isNullOrEmpty utility method for Strings

Strings.isNullOrEmpty(str) 

Do we have anything similar for Lists? Something like

Lists.isNullOrEmpty(list) 

which should be equivalent to

list == null || list.isEmpty() 

Also, do we have anything similar for Arrays? Something like

Arrays.isNullOrEmpty(arr) 

which should be equivalent to

arr == null || arr.length == 0 
like image 835
Ramesh Avatar asked Aug 02 '11 09:08

Ramesh


1 Answers

No, this method does not exist in Guava and is in fact in our "idea graveyard."

We don't believe that "is null or empty" is a question you ever really want to be asking about a collection.

If a collection might be null, and null should be treated the same as empty, then get all that ambiguity out of the way up front, like this:

Set<Foo> foos = NaughtyClass.getFoos(); if (foos == null) {   foos = ImmutableSet.of(); } 

or like this (if you prefer):

Set<Foo> foos = MoreObjects.firstNonNull(     NaughtyClass.getFoos(), ImmutableSet.<Foo>of()); 

After that, you can just use .isEmpty() like normal. Do this immediately upon calling the naughty API and you've put the weirdness behind you, instead of letting it continue on indefinitely.

And if the "null which really means empty collection" is not being returned to you, but passed to you, your job is easy: just let a NullPointerException be thrown, and make that caller shape up.

like image 128
Kevin Bourrillion Avatar answered Sep 22 '22 21:09

Kevin Bourrillion