大咪
TA貢獻(xiàn)785條經(jīng)驗(yàn) 獲得超332個(gè)贊
hashset是set的實(shí)現(xiàn)類,set是接口,set下面最主要的實(shí)現(xiàn)類就是hashset(也就是用的最多的),除此之外的實(shí)現(xiàn)類還有l(wèi)inkedhashset,treeset.......
//Set存儲(chǔ)的元素是無序的,是不可重復(fù)的!
hashset特點(diǎn):
//1.無序性:無序性 != 隨機(jī)性。真正的無序性,指的是元素在底層存儲(chǔ)的位置是無序的。(根據(jù)hash值來存)
//2.不可重復(fù)性:當(dāng)向Set中添加進(jìn)相同的元素的時(shí)候,后面的這個(gè)不能添加進(jìn)去。
//說明:要求添加進(jìn)Set中的元素所在的類,一定要重寫equals()和hashcode()方法。進(jìn)而保證set中元素的不可重復(fù)性!
//set中的元素時(shí)如何存儲(chǔ)的呢?使用了哈希算法。
//當(dāng)向set中添加元素時(shí),首先調(diào)用此對象所在類的hashCode()方法,計(jì)算此對象的hash值,此哈希值決定了此對象在set中的存儲(chǔ)位置,若此位置之前沒有對象存儲(chǔ),則此對象直接存到這個(gè)位置。(就好比一個(gè)教室,按號入座一樣),若已有對象存儲(chǔ),在通過equals()方法比較這兩個(gè)對象的是否相同,如果相同后一個(gè)對象不能再添加進(jìn)來。
//萬一返回false呢?都存儲(chǔ)。(不建議如此)
//>要求:hashcode()方法要與equals()方法一致。
查看完整回答