Java 如何简化映射值的处理

Java 如何简化映射值的处理,java,hashmap,Java,Hashmap,我经常需要编写这样的构造:如果键在那里,那么获取值并执行一些操作,否则就添加一个新值(有时需要额外的处理),有没有办法简化此代码 Map<String, Integer> map = new HashMap<>(); if (map.containsKey("someKey")) { // get the value and do something map.merge("

我经常需要编写这样的构造:如果键在那里,那么获取值并执行一些操作,否则就添加一个新值(有时需要额外的处理),有没有办法简化此代码

    Map<String, Integer> map = new HashMap<>();
  
    if (map.containsKey("someKey")) {
      //  get the value and do something          
        map.merge("someKey", 3, Integer::sum);
    } else {
         map.put("someKey", 0);
    }
Map Map=newhashmap();
if(map.containsKey(“someKey”)){
//获取价值并做些事情
merge(“someKey”,3,Integer::sum);
}否则{
map.put(“someKey”,0);
}

在某些情况下,您可能会压缩代码,使其更难阅读。这取决于整体情况

看起来你计划从一张空地图开始,目标是一次迭代,那么你所拥有的一切都很棒

请原谅我在这里顽皮的回答:

备选案文1:中立和合法 您可以选择使用三元运算符而不是if-else语句

备选案文2:混乱的法律 如果您愿意,可以使用列表流并使用流终端操作“foreach”。如果你也喜欢一些更疯狂的函数,那就在你的lambda上使用三元运算符吧

选择3:中立的邪恶
如果映射已经用值0初始化了所有键,那么实际上可以合并所有的入口键。鉴于我没有完整的上下文,如果没有必要,我不能说多次迭代是个好主意。

在某些情况下,您可能会压缩代码,使其更难阅读。这取决于整体情况

看起来你计划从一张空地图开始,目标是一次迭代,那么你所拥有的一切都很棒

请原谅我在这里顽皮的回答:

备选案文1:中立和合法 您可以选择使用三元运算符而不是if-else语句

备选案文2:混乱的法律 如果您愿意,可以使用列表流并使用流终端操作“foreach”。如果你也喜欢一些更疯狂的函数,那就在你的lambda上使用三元运算符吧

选择3:中立的邪恶 如果映射已经用值0初始化了所有键,那么实际上可以合并所有的入口键。鉴于我没有完整的上下文,如果没有必要,我不能说多次迭代是一个好主意。

这取决于什么是“获取价值并做一些事情”。例如,您可以将if-else替换为
map.merge(“someKey”,0,(x,y)->x+y+3)这取决于什么是“获取价值并做点什么”。例如,您可以将if-else替换为
map.merge(“someKey”,0,(x,y)->x+y+3)