之前一直认为相同的物件们放到 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)