課程
/后端開發
/Java
/Java入門第三季
添加Set之前代碼運行正常,結果也正常。添加set之后,沒有報錯,但我選擇課程2、1、4,輸出的還是2、1、4,順序沒有變啊 ? 不知道為什么
2016-04-05
源自:Java入門第三季 4-11
正在回答
找到原因了,
DK8版java.util.HashMap內的hash算法比JDK7版的混淆程度低;在[0, 2^32-1]范圍內經過HashMap.hash()之后還是得到自己。題主的例子正好落入這個范圍內。外加load factor正好在此例中讓這個HashMap沒有hash沖突,這就導致例中元素正好按大小順序插入在HashMap的開放式哈希表里。作者:RednaxelaFX鏈接:https://www.zhihu.com/question/28414001/answer/40733996來源:知乎著作權歸作者所有,轉載請聯系作者獲得授權。
for(int?i=0;i<6;i++){ ??System.out.print("請輸入要的課程編號:"); ??String?courseID=sc.next(); ??for?(Course?temp?:?st.courseTo)?{ ??????if(temp.id.equals(courseID)){ ???????????st1.course.add(temp); ???????} ???} }
你將輸入課程ID部分代碼中的循環次數增加一點,不要只限定輸入三次,就看出效果了
慕函數4910142
我百度了下,貌似JDK8(不知道從JDK幾開始,我是JDK8)的HashSet、HashMap實現變了。元素插入的的時候,hash表是用算法把不同的數據按照規則放在響應的地址里,所以根據hash表的遍歷去找的話,無論怎么放,位置是一定的,并且遍歷的方式也是一定的。
題主可以換成老版本的JDK試試,再看看效果
我的也是這個情況,沒有無序的效果,懷疑是Java8改進的地方吧
邇丶眼眸里 提問者
舉報
Java中你必須懂得常用技能,不容錯過的精彩,快來加入吧
1 回答我輸入的2 、1、4 結果還是2 、1、 4 試了三次都一樣 這是為什么呢
2 回答hashset的遍歷真的是無序的嗎?遍歷了100次都是同樣的順序!產生質疑。
4 回答為什么我程序輸出不是無序的??
1 回答為什么我測試不出set的無序
5 回答為什么遍歷SET出來的是有序的,試了很多次都是這樣
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2016-11-24
找到原因了,
DK8版java.util.HashMap內的hash算法比JDK7版的混淆程度低;在[0, 2^32-1]范圍內經過HashMap.hash()之后還是得到自己。題主的例子正好落入這個范圍內。外加load factor正好在此例中讓這個HashMap沒有hash沖突,這就導致例中元素正好按大小順序插入在HashMap的開放式哈希表里。
作者:RednaxelaFX
鏈接:https://www.zhihu.com/question/28414001/answer/40733996
來源:知乎
著作權歸作者所有,轉載請聯系作者獲得授權。
2016-04-22
你將輸入課程ID部分代碼中的循環次數增加一點,不要只限定輸入三次,就看出效果了
2016-04-11
我百度了下,貌似JDK8(不知道從JDK幾開始,我是JDK8)的HashSet、HashMap實現變了。元素插入的的時候,hash表是用算法把不同的數據按照規則放在響應的地址里,所以根據hash表的遍歷去找的話,無論怎么放,位置是一定的,并且遍歷的方式也是一定的。
題主可以換成老版本的JDK試試,再看看效果
2016-04-05
我的也是這個情況,沒有無序的效果,懷疑是Java8改進的地方吧