簡體   English   中英

哈希表中包含方法的時間復雜度?

[英]time complexity of contains method in hashtable?

我剛剛在java.util.Hashtable.java中看到了contains方法的代碼。 它有一個循環,它掃描Hashtable中的每個條目,並將其與傳遞的參數進行比較。

我讀到包含方法需要恆定的時間。 當它有一個掃描每個條目的循環時,它怎么可能。

 public synchronized boolean contains(Object value) {
if (value == null) {
    throw new NullPointerException();
}

Entry tab[] = table;
for (int i = tab.length ; i-- > 0 ;) {
    for (Entry<K,V> e = tab[i] ; e != null ; e = e.next) {
    if (e.value.equals(value)) {
        return true;
    }
    }
}
return false;
}

Hashtable.contains()嘗試查找具有相等的條目。 它是按鍵查找的,它是哈希表中的常量時間(通常情況下)。

文檔澄清了這一點:

測試某些鍵是否映射到此哈希表中的指定值。 此操作比containsKey方法更昂貴。

請注意,此方法在功能上與containsValue相同(它是集合框架中Map接口的一部分)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM