1
0
mirror of https://gitee.com/dromara/hutool.git synced 2025-04-05 17:37:59 +08:00

AbsCollValueMap添加removeValue和removeValues方法,用于list value值移除

Merge pull request  from gtycoder/v5-dev
This commit is contained in:
Looly 2022-09-22 08:30:23 +00:00 committed by Gitee
commit 99a09a5770
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
2 changed files with 83 additions and 2 deletions
hutool-core/src
main/java/cn/hutool/core/map/multi
test/java/cn/hutool/core/map

View File

@ -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<K, V, C extends Collection<V>> extends Map
* @since 5.7.4
*/
public void putAllValues(Map<? extends K, ? extends Collection<V>> 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<K, V, C extends Collection<V>> 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<V> values) {
C collection = this.get(key);
return null != collection && collection.removeAll(values);
}
/**
* 创建集合<br>
* 此方法用于创建在putValue后追加值所在的集合子类实现此方法创建不同类型的集合

View File

@ -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<String, String> 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<String, String> 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"));
}
}