diff --git a/src/main/java/org/apache/commons/collections4/IterableUtils.java b/src/main/java/org/apache/commons/collections4/IterableUtils.java index 5a06d3fb08..378d199d9b 100644 --- a/src/main/java/org/apache/commons/collections4/IterableUtils.java +++ b/src/main/java/org/apache/commons/collections4/IterableUtils.java @@ -341,7 +341,15 @@ public static boolean contains(final Iterable iterable, final Object obje */ public static long countMatches(final Iterable input, final Predicate predicate) { Objects.requireNonNull(predicate, "predicate"); - return size(filteredIterable(emptyIfNull(input), predicate)); + long count = 0; + if (input != null) { + for (final E element : input) { + if (predicate.test(element)) { + count++; + } + } + } + return count; } /** @@ -543,7 +551,16 @@ public static int frequency(final Iterable iterable, final T if (iterable instanceof Bag) { return ((Bag) iterable).getCount(obj); } - return size(filteredIterable(emptyIfNull(iterable), EqualPredicate.equalPredicate(obj))); + if (iterable == null) { + return 0; + } + int count = 0; + for (final E element : iterable) { + if (Objects.equals(obj, element)) { + count++; + } + } + return count; } /**