!367 MapBuilder 增加条件put

Merge pull request !367 from angraovip/v5-dev
This commit is contained in:
Looly 2021-07-14 01:23:44 +00:00 committed by Gitee
commit 3dc6b87333
2 changed files with 61 additions and 1 deletions

View File

@ -2,6 +2,7 @@ package cn.hutool.core.map;
import java.io.Serializable;
import java.util.Map;
import java.util.function.Supplier;
/**
* Map创建类
@ -74,6 +75,36 @@ public class MapBuilder<K, V> implements Serializable{
return this;
}
/**
* 链式Map创建
*
* @param condition put条件
* @param k Key类型
* @param v Value类型
* @return 当前类
*/
public MapBuilder<K, V> put(boolean condition, K k, V v) {
if (condition) {
map.put(k, v);
}
return this;
}
/**
* 链式Map创建
*
* @param condition put条件
* @param k Key类型
* @param supplier Value类型结果提供方
* @return 当前类
*/
public MapBuilder<K, V> put(boolean condition, K k, Supplier<V> supplier) {
if (condition) {
map.put(k, supplier.get());
}
return this;
}
/**
* 链式Map创建
*
@ -138,4 +169,4 @@ public class MapBuilder<K, V> implements Serializable{
return MapUtil.join(this.map, separator, keyValueSeparator, isIgnoreNull);
}
}
}

View File

@ -0,0 +1,29 @@
package cn.hutool.core.map;
import org.junit.Assert;
import org.junit.Test;
import java.util.Map;
public class MapBuilderTest {
@Test
public void conditionPutTest() {
Map<String, String> map = MapBuilder.<String, String>create()
.put(true, "a", "1")
.put(false, "b", "2")
.put(true, "c", () -> getValue(3))
.put(false, "d", () -> getValue(4))
.build();
Assert.assertEquals(map.get("a"), "1");
Assert.assertFalse(map.containsKey("b"));
Assert.assertEquals(map.get("c"), "3");
Assert.assertFalse(map.containsKey("d"));
}
public String getValue(int value) {
System.out.println("getValue: " + value);
return String.valueOf(value);
}
}