這是它的源碼: public boolean containsValue(Object value) {
Node<K,V>[] tab; V v;
if ((tab = table) != null && size > 0) {
for (int i = 0; i < tab.length; ++i) {
for (Node<K,V> e = tab[i]; e != null; e = e.next) {
if ((v = e.value) == value ||
(value != null && value.equals(v)))
return true;
}
}
}
return false;
}是在遍歷數(shù)組里先得到頭節(jié)點(diǎn),然后再遍歷鏈表得到value,,時(shí)間復(fù)雜度是O(n)還是O(n2)
1 回答

30秒到達(dá)戰(zhàn)場
TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超6個(gè)贊
介于O(n)和O(n2)之間,更接近于O(n),取決于key的hash重合度,如果所有的value都分布于單獨(dú)的key,則復(fù)雜度就是O(n)。
添加回答
舉報(bào)
0/150
提交
取消