当前位置: 首页 > 知识库问答 >
问题:

如何创建包含optional的hashmap,当检索它时,会给我值或optional。空,但有限制

岑畅
2023-03-14

如何创建一个包含可选的hashmap,当检索时,它会给我值或Optional.empty?但是,我不允许检查null、Optional.empty()或使用isPresent()is空()get()

对于<代码>可选

例如,<代码>。获取(“John”)。平面图(x-

java prettyprint-override">import java.util.HashMap;
import java.util.Map;
import java.util.Optional;

class CustomMap<V> {
    private final Map<String, Optional<V>> map;

    public CustomMap() {
        map = new HashMap<String, Optional<V>>();
    }

    public Optional<V> get(String key) {
        return map.get(key);
    }

    public int size() {
        return map.size();
    }

    public CustomMap<V> put(V item) {
        map.put(item.getKey(), Optional.ofNullable(item));
        return this;
    }

共有1个答案

冯霖
2023-03-14

您可以在get方法中写一个检查,如下所示:

public Optional<V> get(String key) {
    if (map.contains(key)) {
        return map.get(key);
    } else {
        return Optional.empty();
    }
}
 类似资料:
  • 问题内容: 在使用Optional对象时,是否有一种有效的方法来执行向上转换。这是一个示例代码: (2.)给出错误。我可以通过创建另一个函数来解决。 但是有没有一种有效的方法,使得func2()可以用于(1.)和(2.)? 问题答案: 我会写一个像这样的方法: (如果您不喜欢这个名字,请在下面查看我对番石榴的评论) 就运行速度而言,这是非常有效的:强制转换在编译时被忽略: 因此,唯一的成本就是方法

  • 我使用eclipse IDE编写简单的程序 代码如下 当我试图从命令提示符运行这个程序时,我得到了以下错误 线程“main”java.lang.noClassDeffounder中出现异常错误:RegexTestHarness(错误名称:java_pr/RegexTestHarness)位于java.lang.classloader.defineclass1(本机方法)位于java.lang.cl

  • 描述 (Description) optional关键字允许您在文件不存在时导入文件。 如果要导入的文件不存在且未使用optional关键字,则LESS将抛出FileError错误并停止编译。 此功能在version 2.3.0.中发布version 2.3.0. 例子 (Example) 以下示例演示了在LESS文件中使用optional关键字 - <html> <head>

  • 为 Golang 语言增加动态类型与 Optional 类型,主要使用场景是:旧 PHP/Ruby 系统兼容性升级。

  • 问题内容: 嗨,我正在使用Java Optional。我看到Optional有一个ifPresent方法。 而不是做类似的事情: 我想知道如何使用Optional.ifPresent()将值分配给变量。 我正在尝试类似的东西: 我需要lambda函数来获取分配给该变量的值是什么? 问题答案: 您可以使用#orElse或orElseThrow来提高代码的可读性。

  • 我希望在数据库中找不到该项时出现异常