diff --git a/src/main/java/org/openrewrite/java/migrate/guava/NoGuavaIterablesAnyFilter.java b/src/main/java/org/openrewrite/java/migrate/guava/NoGuavaIterablesAnyFilter.java
new file mode 100644
index 0000000000..d118d12b92
--- /dev/null
+++ b/src/main/java/org/openrewrite/java/migrate/guava/NoGuavaIterablesAnyFilter.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright 2024 the original author or authors.
+ *
+ * Licensed under the Moderne Source Available License (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.openrewrite.java.migrate.guava;
+
+import org.openrewrite.ExecutionContext;
+import org.openrewrite.Preconditions;
+import org.openrewrite.Recipe;
+import org.openrewrite.TreeVisitor;
+import org.openrewrite.java.JavaTemplate;
+import org.openrewrite.java.JavaVisitor;
+import org.openrewrite.java.MethodMatcher;
+import org.openrewrite.java.search.UsesMethod;
+import org.openrewrite.java.tree.J;
+import org.openrewrite.java.tree.TypeUtils;
+
+import java.util.Set;
+
+import static java.util.Collections.singleton;
+
+public class NoGuavaIterablesAnyFilter extends Recipe {
+ private static final MethodMatcher ITERABLES_ANY = new MethodMatcher("com.google.common.collect.Iterables any(java.lang.Iterable, com.google.common.base.Predicate)");
+ private static final MethodMatcher ITERABLES_FILTER = new MethodMatcher("com.google.common.collect.Iterables filter(java.lang.Iterable, com.google.common.base.Predicate)");
+
+ @Override
+ public String getDisplayName() {
+ return "Prefer `Collection.stream().anyMatch(Predicate)`";
+ }
+
+ @Override
+ public String getDescription() {
+ return "Prefer `Collection.stream().anyMatch(Predicate)` over `Iterables.any(Collection, Predicate)`.";
+ }
+
+ @Override
+ public Set getTags() {
+ return singleton("guava");
+ }
+
+ @Override
+ public TreeVisitor, ExecutionContext> getVisitor() {
+ TreeVisitor, ExecutionContext> precondition = Preconditions.or(new UsesMethod<>(ITERABLES_ANY), new UsesMethod<>(ITERABLES_FILTER));
+ return Preconditions.check(precondition, new JavaVisitor() {
+ @Override
+ public J visitMethodInvocation(J.MethodInvocation method, ExecutionContext ctx) {
+ if (ITERABLES_ANY.matches(method)) {
+ maybeRemoveImport("com.google.common.base.Predicate");
+ maybeRemoveImport("com.google.common.collect.Iterables");
+ maybeAddImport("java.util.function.Predicate");
+
+ if (TypeUtils.isAssignableTo("java.util.Collection", method.getArguments().get(0).getType())) {
+ return JavaTemplate.builder("#{any(java.util.Collection)}.stream().anyMatch(#{any(java.util.function.Predicate)})")
+ .build()
+ .apply(getCursor(),
+ method.getCoordinates().replace(),
+ method.getArguments().get(0),
+ method.getArguments().get(1));
+ }
+ return method;
+ }
+ if (ITERABLES_FILTER.matches(method)) {
+ maybeRemoveImport("com.google.common.base.Predicate");
+ maybeRemoveImport("com.google.common.collect.Iterables");
+ maybeAddImport("java.util.function.Predicate");
+
+ if (TypeUtils.isAssignableTo("java.util.Collection", method.getArguments().get(0).getType())) {
+ return JavaTemplate.builder("#{any(java.util.Collection)}.stream().filter(#{any(java.util.function.Predicate)}).toList()")
+ .build()
+ .apply(getCursor(),
+ method.getCoordinates().replace(),
+ method.getArguments().get(0),
+ method.getArguments().get(1));
+ }
+ return method;
+ }
+ return super.visitMethodInvocation(method, ctx);
+ }
+ });
+ }
+}
diff --git a/src/main/resources/META-INF/rewrite/no-guava.yml b/src/main/resources/META-INF/rewrite/no-guava.yml
index 3b01ea22e2..002d73ba50 100644
--- a/src/main/resources/META-INF/rewrite/no-guava.yml
+++ b/src/main/resources/META-INF/rewrite/no-guava.yml
@@ -30,6 +30,7 @@ recipeList:
- org.openrewrite.java.migrate.guava.NoGuavaCreateTempDir
- org.openrewrite.java.migrate.guava.NoGuavaDirectExecutor
- org.openrewrite.java.migrate.guava.NoGuavaInlineMeMethods
+ - org.openrewrite.java.migrate.guava.NoGuavaIterablesAnyFilter
- org.openrewrite.java.migrate.guava.NoGuavaListsNewArrayList
- org.openrewrite.java.migrate.guava.NoGuavaListsNewCopyOnWriteArrayList
- org.openrewrite.java.migrate.guava.NoGuavaListsNewLinkedList
diff --git a/src/test/java/org/openrewrite/java/migrate/guava/NoGuavaIterablesAnyFilterTest.java b/src/test/java/org/openrewrite/java/migrate/guava/NoGuavaIterablesAnyFilterTest.java
new file mode 100644
index 0000000000..a01239ae85
--- /dev/null
+++ b/src/test/java/org/openrewrite/java/migrate/guava/NoGuavaIterablesAnyFilterTest.java
@@ -0,0 +1,146 @@
+/*
+ * Copyright 2024 the original author or authors.
+ *
+ * Licensed under the Moderne Source Available License (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *