From 4e18b60b6b464cc3447bd09f0bfeab89c075c001 Mon Sep 17 00:00:00 2001 From: Robin Zheng Date: Mon, 9 Jan 2023 17:25:48 -0500 Subject: [PATCH] Override Java 8 default method Map#forEach Signed-off-by: Robin Zheng --- .../collections/api/map/ConcurrentMutableMap.java | 7 +++++++ .../eclipse/collections/api/map/MapIterable.java | 8 ++++++++ .../collections/api/map/MutableMapIterable.java | 7 +++++++ .../bimap/immutable/AbstractImmutableBiMap.java | 7 +++++++ .../impl/map/immutable/AbstractImmutableMap.java | 7 +++++++ .../immutable/AbstractImmutableSortedMap.java | 7 +++++++ .../collections/test/bimap/BiMapTestCase.java | 14 ++++++++++++++ .../collections/test/map/MapIterableTestCase.java | 14 ++++++++++++++ 8 files changed, 71 insertions(+) diff --git a/eclipse-collections-api/src/main/java/org/eclipse/collections/api/map/ConcurrentMutableMap.java b/eclipse-collections-api/src/main/java/org/eclipse/collections/api/map/ConcurrentMutableMap.java index 28309d13f2..e0d4fc78cd 100644 --- a/eclipse-collections-api/src/main/java/org/eclipse/collections/api/map/ConcurrentMutableMap.java +++ b/eclipse-collections-api/src/main/java/org/eclipse/collections/api/map/ConcurrentMutableMap.java @@ -12,6 +12,7 @@ import java.util.Map; import java.util.concurrent.ConcurrentMap; +import java.util.function.BiConsumer; import org.eclipse.collections.api.block.procedure.Procedure; @@ -43,4 +44,10 @@ default ConcurrentMutableMap withMapIterable(MapIterable action) + { + MutableMap.super.forEach(action); + } } diff --git a/eclipse-collections-api/src/main/java/org/eclipse/collections/api/map/MapIterable.java b/eclipse-collections-api/src/main/java/org/eclipse/collections/api/map/MapIterable.java index 7be3f7a643..ad4302602f 100644 --- a/eclipse-collections-api/src/main/java/org/eclipse/collections/api/map/MapIterable.java +++ b/eclipse-collections-api/src/main/java/org/eclipse/collections/api/map/MapIterable.java @@ -11,9 +11,11 @@ package org.eclipse.collections.api.map; import java.util.Map; +import java.util.Objects; import java.util.Optional; import java.util.Spliterator; import java.util.Spliterators; +import java.util.function.BiConsumer; import java.util.stream.Stream; import java.util.stream.StreamSupport; @@ -349,4 +351,10 @@ default MapIterable aggregateBy( valueFunction.valueOf(value))); return map; } + + default void forEach(BiConsumer action) + { + Objects.requireNonNull(action); + this.forEachKeyValue(action::accept); + } } diff --git a/eclipse-collections-api/src/main/java/org/eclipse/collections/api/map/MutableMapIterable.java b/eclipse-collections-api/src/main/java/org/eclipse/collections/api/map/MutableMapIterable.java index 77a5668219..54999a0d0d 100644 --- a/eclipse-collections-api/src/main/java/org/eclipse/collections/api/map/MutableMapIterable.java +++ b/eclipse-collections-api/src/main/java/org/eclipse/collections/api/map/MutableMapIterable.java @@ -13,6 +13,7 @@ import java.util.Map; import java.util.Objects; import java.util.Set; +import java.util.function.BiConsumer; import org.eclipse.collections.api.bag.MutableBag; import org.eclipse.collections.api.block.function.Function; @@ -433,4 +434,10 @@ default MutableMapIterable aggregateBy( valueFunction.valueOf(value))); return map; } + + @Override + default void forEach(BiConsumer action) + { + MapIterable.super.forEach(action); + } } diff --git a/eclipse-collections/src/main/java/org/eclipse/collections/impl/bimap/immutable/AbstractImmutableBiMap.java b/eclipse-collections/src/main/java/org/eclipse/collections/impl/bimap/immutable/AbstractImmutableBiMap.java index 4b35357daa..fbbbac61b6 100644 --- a/eclipse-collections/src/main/java/org/eclipse/collections/impl/bimap/immutable/AbstractImmutableBiMap.java +++ b/eclipse-collections/src/main/java/org/eclipse/collections/impl/bimap/immutable/AbstractImmutableBiMap.java @@ -15,6 +15,7 @@ import java.util.Iterator; import java.util.Map; import java.util.Set; +import java.util.function.BiConsumer; import org.eclipse.collections.api.RichIterable; import org.eclipse.collections.api.bag.ImmutableBag; @@ -500,4 +501,10 @@ protected Object writeReplace() return new ImmutableBiMapSerializationProxy<>(this); } } + + @Override + public void forEach(BiConsumer action) + { + super.forEach(action); + } } diff --git a/eclipse-collections/src/main/java/org/eclipse/collections/impl/map/immutable/AbstractImmutableMap.java b/eclipse-collections/src/main/java/org/eclipse/collections/impl/map/immutable/AbstractImmutableMap.java index 4db7e128da..8d5dbecd71 100644 --- a/eclipse-collections/src/main/java/org/eclipse/collections/impl/map/immutable/AbstractImmutableMap.java +++ b/eclipse-collections/src/main/java/org/eclipse/collections/impl/map/immutable/AbstractImmutableMap.java @@ -14,6 +14,7 @@ import java.util.Map; import java.util.Optional; import java.util.Set; +import java.util.function.BiConsumer; import org.eclipse.collections.api.bag.ImmutableBag; import org.eclipse.collections.api.bag.MutableBag; @@ -508,4 +509,10 @@ public ImmutableBag countByEach(Function action) + { + super.forEach(action); + } } diff --git a/eclipse-collections/src/main/java/org/eclipse/collections/impl/map/sorted/immutable/AbstractImmutableSortedMap.java b/eclipse-collections/src/main/java/org/eclipse/collections/impl/map/sorted/immutable/AbstractImmutableSortedMap.java index 067999576f..3896eddc9a 100644 --- a/eclipse-collections/src/main/java/org/eclipse/collections/impl/map/sorted/immutable/AbstractImmutableSortedMap.java +++ b/eclipse-collections/src/main/java/org/eclipse/collections/impl/map/sorted/immutable/AbstractImmutableSortedMap.java @@ -14,6 +14,7 @@ import java.util.Map; import java.util.Optional; import java.util.SortedMap; +import java.util.function.BiConsumer; import org.eclipse.collections.api.bag.ImmutableBag; import org.eclipse.collections.api.block.function.Function; @@ -596,4 +597,10 @@ public ImmutableBag countByEach(Function action) + { + super.forEach(action); + } } diff --git a/unit-tests-java8/src/test/java/org/eclipse/collections/test/bimap/BiMapTestCase.java b/unit-tests-java8/src/test/java/org/eclipse/collections/test/bimap/BiMapTestCase.java index 082d22e44f..f9945e5005 100644 --- a/unit-tests-java8/src/test/java/org/eclipse/collections/test/bimap/BiMapTestCase.java +++ b/unit-tests-java8/src/test/java/org/eclipse/collections/test/bimap/BiMapTestCase.java @@ -124,4 +124,18 @@ default void BiMap_toList() target, iterable.toList()); } + + @Override + default void MapIterable_forEach() + { + BiMap bimap = this.newWith(3, 2, 1); + MutableCollection forEach = this.newMutableForFilter(); + bimap.forEach((key, value) -> forEach.add(value + 10)); + assertEquals(this.newMutableForFilter(13, 13, 13, 12, 12, 11), forEach); + + BiMap bimap2 = this.newWithKeysValues(3, "Three", 2, "Two", 1, "One"); + MutableCollection forEach2 = this.newMutableForFilter(); + bimap2.forEach((key, value) -> forEach2.add(key + value)); + assertEquals(this.newMutableForFilter("3Three", "2Two", "1One"), forEach2); + } } diff --git a/unit-tests-java8/src/test/java/org/eclipse/collections/test/map/MapIterableTestCase.java b/unit-tests-java8/src/test/java/org/eclipse/collections/test/map/MapIterableTestCase.java index 7656b14863..5c0471ecdb 100644 --- a/unit-tests-java8/src/test/java/org/eclipse/collections/test/map/MapIterableTestCase.java +++ b/unit-tests-java8/src/test/java/org/eclipse/collections/test/map/MapIterableTestCase.java @@ -319,4 +319,18 @@ default void MapIterable_containsValue() assertTrue(map2.containsValue(null)); } } + + @Test + default void MapIterable_forEach() + { + MapIterable map = this.newWith(3, 3, 3, 2, 2, 1); + MutableCollection forEach = this.newMutableForFilter(); + map.forEach((key, value) -> forEach.add(value + 10)); + assertEquals(this.newMutableForFilter(13, 13, 13, 12, 12, 11), forEach); + + MapIterable map2 = this.newWithKeysValues(3, "Three", 2, "Two", 1, "Three"); + MutableCollection forEach2 = this.newMutableForFilter(); + map2.forEach((key, value) -> forEach2.add(key + value)); + assertEquals(this.newMutableForFilter("3Three", "2Two", "1Three"), forEach2); + } }