gpt4 book ai didi

java - 使用 map.get() 时使用 java Map.containsKey() 是多余的

转载 作者:IT老高 更新时间:2023-10-28 11:41:32 25 4
gpt4 key购买 nike

我一直想知道在最佳实践中是否允许在 java.util.Map 上避免使用 containsKey() 方法,而是执行对 get() 的结果进行空检查。

我的理由是,两次查找值似乎是多余的 - 首先是 containsKey(),然后是 get()

另一方面,Map 的大多数标准实现可能会缓存最后一次查找,或者编译器可以以其他方式消除冗余,并且为了代码的可读性,最好维护 containsKey() 部分。

非常感谢您的意见。

最佳答案

某些 Map 实现允许有 null 值,例如 HashMap,在这种情况下,如果 get(key) 返回 null 它不保证没有条目与此键关联的映射。

因此,如果您想知道 map 是否包含 key ,请使用 Map.containsKey。如果您只需要映射到键的值,请使用 Map.get(key)。如果此映射允许 null 值,则返回值为 null 并不一定表示该映射不包含该键的映射;在这种情况下 Map.containsKey 是无用的,会影响性能。此外,在同时访问 map 的情况下(例如 ConcurrentHashMap),在您测试 Map.containsKey(key) 之后,该条目有可能被另一个条目删除调用 Map.get(key) 之前的线程。

关于java - 使用 map.get() 时使用 java Map.containsKey() 是多余的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14601016/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com