#java #guava
#java #guava
Вопрос:
Я ищу метод, позволяющий гарантировать, что все объекты, содержащиеся в a Collect
( List
), возвращают указанное значение из предиката.
Псевдокод:
Collections.assertTrue(List<Ballons>, isBluePredicate)
Я не вижу, чтобы это было возможно с текущим API (возможно, я не смотрю в нужном месте)
Если это действительно существует, завершит ли функция работу при первом обнаружении ложного значения?
Ответ №1:
Метод Iterables.all(Iterable, Predicate) является обычным способом сделать это; утверждение должно быть вашим собственным.
Ответ №2:
Сама Guava не имеет никаких утверждений. Если я правильно понял вопрос, вы должны иметь возможность использовать Iterables.all
assert Iterables.all(balloonsList, isBlue) : "some aren't blue";
В документации не уточняется, вычисляется ли предикат для остальных элементов, если один из них приводит к false, но я подозреваю, что этого не будет. Вы можете тривиально проверить источник.
Если вам нужно, чтобы он оценивался для всех элементов, вам следует использовать filter
и проверять размер результата.
Комментарии:
1. Это правда.
Iterables.all
делегируетIterators.all
, который имеет логику короткого замыкания, чтобы возвращать false при первом сбое.