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輸出:
上一篇各單位是什么字母表示
下一篇一個ASPnet登陸頁面