mirror of
https://gitee.com/dromara/hutool.git
synced 2025-04-05 17:37:59 +08:00
!813 AbsCollValueMap添加removeValue和removeValues方法,用于list value值移除
Merge pull request !813 from gtycoder/v5-dev
This commit is contained in:
commit
99a09a5770
hutool-core/src
main/java/cn/hutool/core/map/multi
test/java/cn/hutool/core/map
@ -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后追加值所在的集合,子类实现此方法创建不同类型的集合
|
||||
|
@ -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"));
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user