两
个
参
数
K
k
e
y
,
F
u
n
c
t
i
o
n
<
?
s
u
p
e
r
K
,
?
e
x
t
e
n
d
s
V
>
m
a
p
p
i
n
g
F
u
n
c
t
i
o
n
也
就
是
:
首
先
使
用
m
a
p
.
g
e
t
(
k
e
y
)
,
如
果
存
在
则
返
回
。
color{red}两个参数 K key, Function super K, ? extends V> mappingFunction 也就是:首先使用map.get(key),如果存在则返回。
两个参数Kkey,FunctionmappingFunction也就是:首先使用map.get(key),如果存在则返回。
如
果
不
存
在
,
则
调
用
第
二
个
函
数
,
产
生
一
个
对
象
返
回
color{red}如果不存在,则调用第二个函数,产生一个对象返回
如果不存在,则调用第二个函数,产生一个对象返回
注
意
这
里
还
会
将
对
象
塞
入
到
m
a
p
中
color{red}注意这里还会将对象塞入到map中
注意这里还会将对象塞入到map中
类似代码:
@Test
public void test1() {
Map map = Maps.newHashMapWithExpectedSize(16);
String a = map.get("a");
if (StringUtils.isBlank(a)) {
a = "a没有值,手动赋值";
}
String b = map.computeIfAbsent("b", x -> "b也是没有值,手动出去一个");
System.out.println(a);
System.out.println(b);
}
复杂用法
private Map> getPreviewProdSpuCurrentMinMaxMap(Set prodSpuIdSet, List previewPriceTimes) { Map > previewMinMaxMap = Maps .newHashMapWithExpectedSize(prodSpuIdSet.size()); if (CollectionUtil.isNotEmpty(prodSpuIdSet)) { previewPriceTimes.forEach(previewPriceTime -> { Map minMax = XXXXXXX.INSTANCE .getProdSpuCurrentMinMax(Lists.newArrayList(prodSpuIdSet), previewPriceTime.getTime()); minMax.forEach((k, v) -> previewMinMaxMap.computeIfAbsent(k, a -> Maps.newHashMapWithExpectedSize(3)) .put(previewPriceTime.getTime(), v)); }); } log.info(LogMsgKit.of("getPreviewProdSpuCurrentMinMaxMap").p("previewMinMaxMap", previewMinMaxMap) .end("获取预告价取价时间的起购件数!")); return previewMinMaxMap; }



