【问题标题】:Retrieve value from hashmap and return [duplicate]从哈希图中检索值并返回 [重复]
【发布时间】:2019-05-23 11:54:31
【问题描述】:

如何在 Java-8 中为以下逻辑编写代码,这是我的代码

private static Integer getTheInteger() {
    Map<String, Integer> items = new HashMap<>();
    items.put("A", 10);
    items.put("B", 20);
    items.put("C", 30);
    items.put("D", 40);
    items.put("E", 50);
    items.put("F", 60);

    for (Map.Entry<String, Integer> entry : items.entrySet()) {
        if(entry.getKey().equals("E")) {
            return entry.getValue();
        }
    }
    return 0;
}

【问题讨论】:

标签: java java-8 hashmap


【解决方案1】:

理想情况下,您只需要一个get。此外,要处理默认情况(此处为return 0),请使用Map.getOrDefault,如下所示:

return items.getOrDefault("E", 0);

【讨论】:

  • 这可以帮助您避免创建不必要的Optional,甚至与分支相比有助于提高可读性。
  • 确实不错,我好像每次都忘了getOrDefault...
【解决方案2】:

如果您为此使用流,它看起来像:

return items.entrySet()
            .stream()
            .filter(s -> "E".equals(s.getKey()))
            .findFirst().map(Map.Entry::getValue)
            .orElse(0);

但更好的方法是不遍历映射条目,而是使用get() 并根据结果提供默认值。

return Optional.ofNullable(items.get("E")).orElse(0);

【讨论】:

    【解决方案3】:

    您不需要循环,也不需要任何 Java 8 功能。

    return items.get("E");
    

    或者,当 key 不在 Map 中时处理 0 值:

    return items.containsKey("E") ? items.get("E") : 0;
    

    【讨论】:

    • 我想我会发现getOrDefault 更好(基于意见),虽然在封面下做同样的检查。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-18
    • 1970-01-01
    • 1970-01-01
    • 2014-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多