Java HashMap.remove(key)与HashMap.put(key,null)-哪个更快?

Java HashMap.remove(key)与HashMap.put(key,null)-哪个更快?,java,Java,我想知道HashMap.put(key,null)是否比HashMap.remove(key)有更好的性能?哪一个更好完全取决于如何在代码中使用HashMap,因为它们是两种不同的方法,可以做两件不同的事情 如果您只考虑性能,并且只想知道哪一个更快,那么就不会有太大的区别,因为HashMap对于put和remove而言,时间复杂度都是O(1) 我猜remove可能会有一点性能优势,因为它减少了HashMap中的键总数,而且在最坏的情况下,HashMap的时间复杂度肯定可能是O(n),但我认为它可

我想知道
HashMap.put(key,null)
是否比
HashMap.remove(key)
有更好的性能?

哪一个更好完全取决于如何在代码中使用
HashMap
,因为它们是两种不同的方法,可以做两件不同的事情

如果您只考虑性能,并且只想知道哪一个更快,那么就不会有太大的区别,因为
HashMap
对于
put
remove
而言,时间复杂度都是O(1)


我猜
remove
可能会有一点性能优势,因为它减少了
HashMap
中的键总数,而且在最坏的情况下,
HashMap
的时间复杂度肯定可能是O(n),但我认为它可以忽略不计。

这取决于您在代码中使用的方法。put(key,null)不同于HashMap.remove(key),因为put用于添加一些值,remove用于删除。HasMap的时间复杂度为O(1)。因为这两个都用在HashMap中,所以它们的时间复杂度是相同的。所以我认为它们都更快。

可能重复吗?欢迎访问stackoverflow.com。请仔细阅读。最后,请阅读这个“哪个更好?”你的意思是哪个更快?这两种方法是不同的。调用
remove(key)
实际上会删除映射,而调用
put(key,null)
只会将键映射到
null
。换句话说,即使在调用后者之后,对
containsKey(key)
的调用也会返回
true
。如果您的目标是从地图中删除条目,请使用
remove
。请注意,
Map
实现不需要允许
null
值,而是可以抛出
NullPointerException
。这两个操作都涉及Hashmap,Hashmap的时间复杂度为O(1)。