HashSet實(shí)際上是一個(gè)HashMap實(shí)例,數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)都是數(shù)組+鏈表。
HashSet是基于HashMap實(shí)現(xiàn)的,HashSet中的元素都存放在HashMap的key上面,而value都是一個(gè)統(tǒng)一的對(duì)象PRESENT。
private static final Object PRESENT = new Object(); HashSet中add方法調(diào)用的是底層HashMap中的put方法,put方法要判斷插入值是否存在,而HashSet的add方法,首先判斷元素是否存在,如果存在則插入,如果不存在則不插入,這樣就保證了HashSet中不存在重復(fù)值。 通過對(duì)象的hashCode和equals方法保證對(duì)象的唯一性。