I'm using google-collections and trying to find the first element that satisfies Predicate if not, return me 'null'.
Unfortunately, Iterables.find and Iterators.find throws NoSuchElementException when no element is found.
Now, I am forced to do
Object found = null;
if ( Iterators.any( newIterator(...) , my_predicate )
{
found = Iterators.find( newIterator(...), my_predicate )
}
I can surround by 'try/catch' and do the same thing but for my use-cases, I am going to encounter many cases where no-element is found.
Is there a simpler way of doing this?
Since Guava 7, you can do this using the Iterables.find() overload that takes a default value:
Iterables.find(iterable, predicate, null);
It sounds like you should be using Iterators.filter, then checking the value of hasNext on the returned iterator.
This was filed as a feature request:
http://code.google.com/p/guava-libraries/issues/detail?id=217
We are actually in progress on it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With