据我所知,java中有一个选项可以向HashTable插入一个新密钥。 这完成了:
Hashtable<String,String> hashTable=new Hashtable<String,String>();
hashTable.put("Donald", "Trump");
唐纳德是关键,而特朗普就是价值。如果我想将值“TrumpY”添加到“唐纳德”,那么我使用相同的操作:
hashTable.put("Donald", "TrumpY");
我对此操作的时间复杂性有疑问。据我所知,时间复杂度为O(1)
。但这是第一次和第二次操作的相关性吗?因为第一个需要向哈希表添加一个新密钥,第二个需要只添加一个已经存在的密钥值。
答案 0 :(得分:3)
要查找必须添加值的插槽,Map必须找到此插槽的位置。为此,它使用密钥的哈希码。根据底层实现,可能存在冲突处理(链接),...因此,如果密钥已经存在,则第二个操作通常需要哈希计算的时间+查找+设置值所需。
答案 1 :(得分:0)
首次插入密钥需要更多时间,因为它必须创建java.util.Hashtable.Entry
的新实例。
在替换密钥的现有值的情况下,只需将新值分配给现有value
实例中的Entry
引用。