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

检测Java可选的Hashmap是否有空值?

鄢开诚
2023-03-14

我想知道hashmap的所有值是否为空。除了必须检查映射中每个条目中的值之外,还有什么是最好的方法?

HashMap<Long, Optional<Long>> aMap = new HashMap<>();

aMap.put(new Long(55), Optional.empty());
aMap.put(new Long(66), Optional.empty());
aMap.put(new Long(77), Optional.empty());
aMap.put(new Long(99), Optional.empty());

共有1个答案

能业
2023-03-14

使用Java8流的API。

使用allMatch

boolean allEmpty = aMap.values()
    .stream()
    .allMatch(opt -> !opt.isPresent());

或使用noneMatch

boolean allEmpty = aMap.values()
    .stream()
    .noneMatch(Optional::isPresent);

从文档中需要注意的一件重要事情是,这两种方法都是“短路终端操作”(short-circuiting terminal operations)

这是一个短路端子操作。

这意味着该方法不需要计算整个流,当它在nonematch中创建第一个匹配或在allmatch中创建第一个不匹配时,它会立即返回。

 类似资料:
  • 问题内容: 在Objective-C中,当我有一个数组时 我想检查它是否不为空,我总是这样做: 这样一来,无需检查是否会因为这种情况将导致代码陷入错误,并且非空数组也会这样做。 但是,在Swift中,我偶然发现了一个可选数组: 而且我无法确定要使用哪种条件。我有一些选择,例如: 选项A:在相同条件下检查非用例和空用例: 选项B: 使用解除绑定数组: 选项C: 使用Swift提供的合并运算符: 我不

  • 有一个名为“矩阵”的哈希图,它有很多键。每个键的值都是一个具有自己值的ArrayList。考虑到这一点,我无法找到一种方法来测试ArrayList值中是否有特定值,因为如果我将字符串参数传递给HashMap的方法“.containsValue()”,该方法将找到ArrayList对象,测试将为false。因此,我必须做一些相当疯狂的事情,就像我在例子中所做的那样。正如您所看到的,没有像“getAr

  • 我正在开发一个使用返回的方法的程序,我需要迭代它并创建一个新对象。我该怎么做? 我对Java可选选项的理解是减少检查,但如果没有检查,我仍然无法做到这一点。使用或并拥有简洁的代码,有没有更好的解决方案?

  • 问题内容: 所以我知道这是一个很普遍的问题,已经找到了解决方案。但是,当我尝试这样做时,它无法正常工作。 我的JTextField为空,并且未启用该按钮。当我在文本字段中写入内容时,该按钮未启用。 因此,我的程序应每秒检查一次此字段是否为空。只要有人在文本字段中写入内容,就应启用该按钮。^^ 问题答案: 为此,您需要在中添加更改侦听器(一个响应文本更改的侦听器),并且在内,您需要根据是否为空将其更

  • 本文向大家介绍C#检测DataSet是否为空的方法,包括了C#检测DataSet是否为空的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#检测DataSet是否为空的方法。分享给大家供大家参考。具体如下: 下面的代码片段通过判断DataSet的Table数量来判断DataSet是否为空 希望本文所述对大家的C#程序设计有所帮助。

  • 问题内容: 如何检查布尔值是否为null?因此,如果我知道“ hideInNav”为空。如何阻止它进一步执行?像下面这样的东西似乎不起作用,但是为什么呢? 问题答案: 只能是或因为它是原始数据类型(+ 变量的默认值为)。如果要使用值,则可以改用类。布尔是一种引用类型,这就是您可以分配给布尔“变量”的原因。例: