我剛剛在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;
}
你能發表那部分代碼嗎? – 2012-01-04 21:52:10
您是否在詢問包含或containsKey。包含檢查以查看地圖是否包含值,這需要檢查所有條目。 – 2012-01-04 21:54:23
如果你關心性能,你應該考慮HashMap或ConcurrentHashMap,如果你需要它是線程安全的。 – 2012-01-04 21:58:58