From 9d1156f1fd2dfd70198e3b97ad29a3c99ccaaa49 Mon Sep 17 00:00:00 2001 From: Hyunwoo Jung Date: Mon, 14 Sep 2026 21:31:42 +0900 Subject: [PATCH] Avoid redundant filtering in FilteredMap.size() Since keySet() already applies the filter, size() evaluated the predicate twice for every accepted key. This commit uses delegate.keySet() instead, avoiding the second evaluation as well as a FilteredSet and FilteredIterator allocation. Closes gh-37256 Signed-off-by: Hyunwoo Jung --- .../src/main/java/org/springframework/util/FilteredMap.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-core/src/main/java/org/springframework/util/FilteredMap.java b/spring-core/src/main/java/org/springframework/util/FilteredMap.java index 57200d9baeb..1c8f8eb0eac 100644 --- a/spring-core/src/main/java/org/springframework/util/FilteredMap.java +++ b/spring-core/src/main/java/org/springframework/util/FilteredMap.java @@ -56,7 +56,7 @@ final class FilteredMap extends AbstractMap @Override public int size() { int size = 0; - for (K k : keySet()) { + for (K k : this.delegate.keySet()) { if (this.filter.test(k)) { size++; }