之前一直認為相同的物件們放到 HashSet, 由於內部順序是 hash 決定
取出的順序會是一樣
ex:
n 個 HashSet, n 個內容相同的字串群組 (每組都有 m 個字串, 可能排列順序不同)
將這 n 個字串群組分別塞進 n 個 HashSet
取出的順序會是相同的
也就是 for (String s : 任一個 HashSet) 得到的字串順序會一樣
直到最近在 Spring Boot 寫測試
直接用 assertIterableEquals(兩個 HashSet) 有時會錯誤
將兩個 HashSet 內容印出來才發現有時候順序會不一樣
更神奇的是相同一段程式碼, 執行 2 次還會有不一樣的結果
所以 HashSet 內部順序不只和 hash 有關嗎 ?
環境 :
jdk 1.8.221
Spring Boot 2.2.1.RELEASE
org.junit.vintage (應該是 JUnit 5)