【问题标题】:How to simplify processing values from Map如何简化来自 Map 的处理值
【发布时间】:2020-12-05 14:02:13
【问题描述】:

我经常要写这样的结构:如果键在那里,获取值并做一些事情,否则放一个新值(有时需要额外的处理)有没有办法简化这段代码?

    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);
    }

【问题讨论】:

  • 这取决于什么是“获得价值并做某事”。对于您的示例,您可以将 if else 替换为 map.merge("someKey", 0, (x, y) -&gt; x + y + 3);

标签: java hashmap


【解决方案1】:

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

您似乎计划从一个空地图开始,以单次迭代为目标,那么您所拥有的就很棒。

请原谅我在这里开玩笑的回应:

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

选项 2:混乱守序 如果您愿意,可以使用列表流并使用流终端操作“foreach”。如果您也喜欢更多功能性的疯狂,请在您的 lambda 上使用三元运算符。

选项 3:中立邪恶 如果映射已经将所有键的值初始化为 0,那么您基本上可以合并所有条目键。鉴于我没有完整的上下文,如果没有必要,我不能说多次迭代是个好主意。

【讨论】:

    猜你喜欢
    • 2011-07-11
    • 2016-11-24
    • 2013-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-14
    • 1970-01-01
    • 2019-03-18
    相关资源
    最近更新 更多