[英]Is Map.containsKey() useful in a Map that has no null values?
在下面的代码中:
if (map.containsKey(key)) {
map.remove(key);
}
查看性能,在尝试从地图中删除值之前首先执行Map.containsKey()
检查是否有用?
同样的问题是检索值,如果您知道地图不包含null
值,首先执行包含检查是否有用?
if (map.containsKey(key)) {
Object value = map.get(key);
}
在尝试从地图中删除值之前首先执行Map.containsKey()检查是否有用?
不,这会适得其反:
如果要无条件地删除该项,只需调用map.remove(key)
。
同样的问题是检索值
这里适用相同的逻辑。 当然你需要检查结果为null
,所以在这种情况下, if
留在那里。
请注意,此清理练习首先是关于可读性,然后是关于性能的。 访问地图是一种快速操作,因此访问它两次不太可能导致重大性能问题,除了一些相当极端的情况。 但是,删除额外的条件将使您的代码更具可读性,这非常重要。
remove()
上的Java文档声明只有在map包含这样的元素时才会删除元素。 所以remove()
之前的contains()
检查是多余的。
这是主观的(完全是样式的情况),但是对于你正在检索值的情况,我更喜欢对null检查的contains(key)
调用。 布尔比较感觉比空比较好。 如果Map<K,V>.get(key)
返回Optional<V>
Map<K,V>.get(key)
我可能会有不同的感受。
此外,值得注意的是“给定无空键”断言是一个相当难以证明的断言,具体取决于Map的类型(您可能不知道)。 一般来说,我认为对检索的冗余检查是(或者只是感觉 )更安全,以防万一在其他地方出现错误(敲木头,检查黑猫,并避免出路上的梯子)。
对于移除操作,您可以找到。 检查没用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.