java8 map compute和computeIfAbsent

computeIfAbsent: 如果map里没有这个key,那么就按照后面的这个function添加对应的key和value
如果要这个key,那么就不添加
babuffer.weightClicks.computeIfAbsent(currEntry.getKey(), k -> {
babuffer.size = babuffer.size + 1;
return new Double[] {0d, 0d};
});

compute:如果map里有这个key,那么function输入的v就是现在的值,返回的是对应value,如果没有这个key,那么输入的v是null
babuffer.weightClicks
.compute(currEntry.getKey(), (k, v) -> new Double[] {v[0] + currEntry.getValue()[0],
v[1] + currEntry.getValue()[1]});

posted @ 2018-03-15 15:36  悟法悟天  阅读(14912)  评论(0编辑  收藏  举报