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

Map中的密钥存在性检查工具

谯嘉懿
2023-03-14

我使用以下代码来检查Map实例中是否存在键:

if (!map_instance.containsKey(key))
    throw new RuntimeException("Specified key doesn't exist in map");
else
   return map_instance.get(key);

我的问题是:

是否有实用工具或Map实现来简化上述代码,例如:

custom_map.get(key,"Specified key doesn't exist in map");

我的目标是:如果map中不存在key,则map实现会抛出一个带有传递字符串的异常。

我不知道我的愿望是否合理?

对不起,如果我使用了错误的术语或语法,我还在学习英语。)

共有3个答案

慕容恩
2023-03-14

还有一个很好的方法可以实现这一点:

return Objects.requireNonNull(map_instance.get(key), "Specified key doesn't exist in map");

赞成的意见:

  • 纯Java-无LIB
  • 无冗余可选-垃圾更少

缺点:

  • 只有NullPointerException——有时NoTouchElementException或自定义异常更可取

需要Java 8

公羊英达
2023-03-14

在Java8中,您可以从Map中使用computeIfAbent,如下所示:

map.computeIfAbsent("invalid", key -> { throw new RuntimeException(key + " not found"); });
杨波娃
2023-03-14

我使用可选的Javautil类,例如。

Optional.ofNullable(elementMap.get("not valid key"))
            .orElseThrow(() -> new ElementNotFoundException("Element not found"));
 类似资料:
  • 问题内容: 是否总是需要在HashMap中检查密钥是否存在? 我有一个说有1000个条目的HashMap,我正在考虑提高效率。如果HashMap的访问非常频繁,则每次访问时检查密钥是否存在将导致大量开销。相反,如果键不存在,因此发生异常,我可以捕获该异常。(当我知道这种情况很少发生时)。这将减少对HashMap的访问。 这可能不是一个好的编程习惯,但是它将帮助我减少访问次数。还是我在这里想念什么?

  • 问题内容: 我陷入一种情况,我需要检查嵌套JSON对象中是否存在密钥。通过嵌套的JSON对象,我在父JSON对象中具有一个JSON对象作为其键之一的值。所以我需要检查此密钥是否存在于整个JSON对象中。我将以下数据作为对象。我知道我可以解析此对象以获得JSON对象。 我已经使用方法来检查主要JSON对象中密钥的存在,并且它可以工作。但是对于检查任何内部JSON对象(例如“ info”),我需要再次

  • 我不熟悉shell脚本,我有一个用于导入cert和使用keytool导入keystore的脚本。此脚本位于Pod中,有时我必须重新启动Pod,有时当此脚本运行时,我会出现此错误 现有条目别名服务器存在,覆盖?[no]:输入新别名(返回以取消此条目的导入): 我知道有命令列出别名 它给出了输出 服务器,2022年6月22日,PrivateKeyEntry,证书指纹(SHA-256):AC:DC:12

  • 所以,我从服务器上获得了一些JSON值,但我不知道是否会有一个特定的字段。 比如: 有时,会有一个额外的字段,如: 我想检查名为“club”的字段是否存在,这样在解析时我就不会得到 组织。json。JSONException:俱乐部没有价值

  • 问题内容: 我是NodeJS的新手,也许没有事件系统应该如何工作。找不到错误。请指教。我需要一个简单的任务- 检查标签,如果它不存在,则设置新密钥和有关该标签的信息。问题是-然后我第一次运行该脚本,它始终返回“键不存在”。检查redisdb键- 它会创建很多标签这是我的代码 这是另一个例子 输出: 看起来nodejs仅在该“设置”命令之后执行所有“获取”命令。所以…我了解,这全都归因于异步操作。但

  • 问题内容: 我想知道boto3中是否存在密钥。我可以循环存储桶中的内容并检查密钥是否匹配。 但这似乎更长了,而且太过分了。Boto3官方文档明确说明了如何执行此操作。 可能是我缺少明显的东西。有人可以指出我如何实现这一目标。 问题答案: Boto 2的对象曾经有一种方法,该方法通过执行HEAD请求并查看结果来检查密钥是否在S3上存在,但似乎不再存在。您必须自己做: 对单个键执行HEAD请求,这是快