起因
我写了这样一段被鄙视的代码。。。
就是想实现map中有则累加,无则put
list.forEach(orderVO -> {
if (map.containsKey(orderVO.getProductId())) {
BigDecimal tmp = map.get(orderVO.getProductId());
map.put(orderVO.getProductId(),
tmp.add(orderVO.getXxx()));
} else {
map.put(orderVO.getProductId(),
orderVO.getXxx());
}
});
然后过CR的时候被同事友情提示了下有更简单的写法
所以简单的方法到底是什么呀我丢~
本来我以为是Optional这种,但想了想咱也不能理解错人家的意思白白丢失了写正确代码的机会,跑去问了下才知道,点进Map接口,一直往下翻,会解锁新姿势
人家都给我封装好了,我还只会用put/get?
所以以上的代码就会变成这样
list.forEach(orderVO -> {
map.compute(orderVO.getProductId(),
(productId, share) -> share == null ? orderVO.getXxx()
: share.add(orderVO.getXxx()));
});
反省
=。=工作后感觉基础知识就停滞了一样,记得思考和学习啊敲脑袋!