欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

HashSet輸入為什么是有序的

呂致盈2年前12瀏覽0評論

HashSet輸入為什么是有序的?

所以,想要確保有序并且集合中無重復(fù)元素,用HashTree穩(wěn)妥。通常插入HashSet的是Integer,其hashCode()實現(xiàn)就返回int值本身。所以在對象hashCode這一步引入了巧合的“按大小排序”。

然后HashMap.hash(Object)獲取了對象的hashCode()之后會嘗試進一步混淆。JDK8版java.util.HashMap內(nèi)的hash算法比JDK7版的混淆程度低;在[0, 2^32-1]范圍內(nèi)經(jīng)過HashMap.hash()之后還是得到自己。單純插入數(shù)字則正好落入這個范圍內(nèi)。

外加load factor正好在此例中讓這個HashMap沒有hash沖突,這就導(dǎo)致例中元素正好按大小順序插入在HashMap的開放式哈希表里。

這里修改把插入的數(shù)字先加上2的16次方,然后拿出來再減去2的16次方。

public class Test {HashSet輸出:TreeSet輸出:

java 三次方,HashSet輸入為什么是有序的