From d24672bb4e54ad7f81aadcb7450aa304e5abf11c Mon Sep 17 00:00:00 2001 From: gaotianyu01 Date: Thu, 22 Sep 2022 15:20:28 +0800 Subject: [PATCH] =?UTF-8?q?AbsCollValueMap=E6=B7=BB=E5=8A=A0removeValue?= =?UTF-8?q?=E6=96=B9=E6=B3=95=EF=BC=8C=E7=94=A8=E4=BA=8E=E5=8D=95=E4=B8=AA?= =?UTF-8?q?=E5=80=BC=E7=A7=BB=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/map/multi/AbsCollValueMap.java | 29 +++++++++- .../cn/hutool/core/map/CollValueMapTest.java | 56 +++++++++++++++++++ 2 files changed, 83 insertions(+), 2 deletions(-) create mode 100644 hutool-core/src/test/java/cn/hutool/core/map/CollValueMapTest.java diff --git a/hutool-core/src/main/java/cn/hutool/core/map/multi/AbsCollValueMap.java b/hutool-core/src/main/java/cn/hutool/core/map/multi/AbsCollValueMap.java index 49c2edd47..921e85888 100644 --- a/hutool-core/src/main/java/cn/hutool/core/map/multi/AbsCollValueMap.java +++ b/hutool-core/src/main/java/cn/hutool/core/map/multi/AbsCollValueMap.java @@ -5,6 +5,7 @@ import cn.hutool.core.map.MapWrapper; import java.util.Collection; import java.util.HashMap; +import java.util.Iterator; import java.util.Map; /** @@ -80,9 +81,9 @@ public abstract class AbsCollValueMap> extends Map * @since 5.7.4 */ public void putAllValues(Map> m) { - if(null != m){ + if (null != m) { m.forEach((key, valueColl) -> { - if(null != valueColl){ + if (null != valueColl) { valueColl.forEach((value) -> putValue(key, value)); } }); @@ -117,6 +118,30 @@ public abstract class AbsCollValueMap> extends Map return CollUtil.get(collection, index); } + /** + * 移除value集合中的某个值 + * + * @param key 键 + * @param value 集合中的某个值 + * @return 是否删除成功 + */ + public boolean removeValue(K key, V value) { + C collection = this.get(key); + return null != collection && collection.remove(value); + } + + /** + * 移除value集合中的某些值 + * + * @param key 键 + * @param values 集合中的某些值 + * @return 是否删除成功 + */ + public boolean removeValues(K key, Collection values) { + C collection = this.get(key); + return null != collection && collection.removeAll(values); + } + /** * 创建集合
* 此方法用于创建在putValue后追加值所在的集合,子类实现此方法创建不同类型的集合 diff --git a/hutool-core/src/test/java/cn/hutool/core/map/CollValueMapTest.java b/hutool-core/src/test/java/cn/hutool/core/map/CollValueMapTest.java new file mode 100644 index 000000000..fad3bbd04 --- /dev/null +++ b/hutool-core/src/test/java/cn/hutool/core/map/CollValueMapTest.java @@ -0,0 +1,56 @@ +package cn.hutool.core.map; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.ListUtil; +import cn.hutool.core.lang.Console; +import cn.hutool.core.map.multi.ListValueMap; +import cn.hutool.core.map.multi.SetValueMap; +import org.junit.Assert; +import org.junit.Test; + +import java.util.HashSet; + +public class CollValueMapTest { + @Test + public void testListValueMapRemove() { + final ListValueMap entries = new ListValueMap<>(); + entries.putValue("one","11"); + entries.putValue("one","22"); + entries.putValue("one","33"); + entries.putValue("one","22"); + + entries.putValue("two","44"); + entries.putValue("two","55"); + + entries.putValue("three","11"); + + entries.removeValue("one","22"); + Console.log(entries); + + Assert.assertEquals(ListUtil.of("11","33","22"), entries.get("one")); + + entries.removeValues("two",ListUtil.of("44","55")); + Assert.assertEquals(ListUtil.empty(),entries.get("two")); + } + + @Test + public void testSetValueMapRemove() { + final SetValueMap entries = new SetValueMap<>(); + entries.putValue("one","11"); + entries.putValue("one","22"); + entries.putValue("one","33"); + entries.putValue("one","22"); + + entries.putValue("two","44"); + entries.putValue("two","55"); + + entries.putValue("three","11"); + + entries.removeValue("one","22"); + Assert.assertEquals(CollUtil.newHashSet("11","33"), entries.get("one")); + + entries.removeValues("two",ListUtil.of("44","55")); + Assert.assertEquals(CollUtil.empty(HashSet.class),entries.get("two")); + } + +}