HashMap和Hashtable都實現(xiàn)了Map接口笋粟,但決定用哪個之前先要弄清楚它們之間的區(qū)別怀挠。主要的區(qū)別是:線程安全性,同步(synchronization),以及速度害捕。
hashcode()方法決定了對新啊會放到那個bucket里绿淋,當多個對象的hashcode值沖突時,equals()方法決定了這些對象是否是“同一個”對象尝盼。所以吞滞,如果要將自定義的對象放入到hashmap中或hashset中,要重寫@Override hashcode()和equals()方法盾沫。
get()
get(Object key)方法根據(jù)指定的key值返回對應的value冯吓,該方法調用了getEntry(Object key)得到相應的entry,然后返回entry.getValue()疮跑。因此getEntry()是算法的核心。
算法思想是首先通過hash()函數(shù)得到對應bucket的下標凸舵,然后依次遍歷沖突鏈表祖娘,通過key.equals(k)方法來判斷是否是要找的那個entry。