HashSet實際上是一個HashMap實例,數據存儲結構都是數組+鏈表。
HashSet是基于HashMap實現的,HashSet中的元素都存放在HashMap的key上面,而value都是一個統一的對象PRESENT。
private static final Object PRESENT = new Object(); HashSet中add方法調用的是底層HashMap中的put方法,put方法要判斷插入值是否存在,而HashSet的add方法,首先判斷元素是否存在,如果存在則插入,如果不存在則不插入,這樣就保證了HashSet中不存在重復值。 通過對象的hashCode和equals方法保證對象的唯一性。