Java集合分爲List和Set,List允許重複元素存在,而Set不容許重複元素存在,那麼在Set中添加新元素的時候是怎麼檢測重複性的呢?若是用equals ,那效率的很低了,Set中有n個元素,若是添加一個元素,檢查是否有和該元素重複的元素,那麼須要比較n次,空間複雜度O(n),對於添加一個元素來講,空間複雜度大了一些。這個時候就須要用到hashcode了,hashcode返回的是經過hash算法的所獲得該元素在內存中的地址,若是兩個元素hashcode計算出的地址不一樣,說明這兩個元素的值不一樣,可是兩個元素hashcode計算出的地址相同,兩個元素的值不一同相同。那麼在該添加元素時候計算出該元素對應的地址,而後檢測該地址是否被佔用,沒有被佔用,那麼說明集合中沒有與之重複的元素,能夠插入;若是該地址被佔用,這時須要用equals判斷兩個元素的值是否相等,相等,不容許插入,不相等,爲該元素查找可分配的地址。算法