List、Map中的contains和containsKey、containsValue方法閱讀后的問題記錄
List和Map中都存在判斷存儲的對象是否存在的方法。
List接口繼承于Collection接口。Map是HashMap、TreeMap、LinkedHashMap的頂級接口。
在List、Set中判斷已存儲的是否存在的方式是contains()方法。
List的常用的List的實現(xiàn)類ArrayList、LinkedList中的contains()方法的具體實現(xiàn)都是下面這樣:
public boolean contains(Object o) {
return indexOf(o) >= 0;
}
而indexOf(Object obj)的實現(xiàn)是通過for循環(huán)遍歷調(diào)用equals方法。
Map是通過內(nèi)部接口Entry以鍵值對的方式保存對象。不論是HashMap還是HashTable等其他實現(xiàn)了Map接口的類在進行判斷對象是否已經(jīng)存在時也都存在
使用for循環(huán)遍歷的過程,在比較時只是使用了hash函數(shù)進行運算。為什么再存在數(shù)據(jù)超1000時使用Map的實現(xiàn)類比使用List的實現(xiàn)類要快很多。
沒想明白,先記著,如果有那位仁兄看到麻煩解釋一下,謝謝。

浙公網(wǎng)安備 33010602011771號