我有一些代码看起来有点笨拙。我想让它更具功能性的编程风格,但我正在努力。我想知道是否有人可以帮忙(或者这可能是最好的方式?)?
private Map<String, Integer> container;
public void addItemToMap(String item, Integer quantity ){
if(container.containsKey(item)){
container.compute(item, (k,v ) -> Integer.valueOf(v+quantity));
}else{
container.put(item, quantity);
}
}
感谢。
答案 0 :(得分:3)
您可以使用以下一个班轮替换if-else
:
container.compute(item,(k,v) -> v == null ? quantity : Integer.valueOf(v+quantity));
在上面的例子中。假设存在非空值。
但是,正如Sotirios
在评论中提到的那样,Map.compute doc中也提到过,最好在这里使用Map.merge,如下所示(ref):
map.merge(item, quantity, Integer::sum)
答案 1 :(得分:2)
您是否只是将该地图用作计数器?
我会建议番石榴的Multiset:你的功能只是打电话给Multiset#add()。