Я люблю Google Guava и часто его использую, но есть один способ, который я всегда нахожу, пишу ..
public static <T> T tryFind(Iterable<T> iterable, Predicate<T> predicate){
for(T t : iterable){
if(predicate.apply(t)){
return t;
}
}
return null;
}
Мне кажется, это очень полезное дополнение к Iterables
(такжена Iterators
в этом отношении), поэтому мне интересно, почему он отсутствует.Кроме того, хотя я вижу смысл в том, чтобы иметь метод, который выбрасывает NoSuchElementException
, возможно, для того, чтобы различать нахождение нулевого и не нахождение элемента, эта ситуация возникает, только если вы используете предикат
public boolean apply(T t){
return t==null;
}
, что не кажется распространенным случаем.
Так почему разработчики гуавы решили использовать это поведение вместо того, чтобы просто возвращать нуль, если он не может его найти?
Вот javadoc для [Iterables.find ()] [1]
[1]: http://google -collections.googlecode.com / svn / trunk / javadoc /ru / google / common / collect / Iterables.html # find (java.lang.Iterable , com.google.common.base.Predicate)