在服务器停止之前,HashSet的随机顺序始终相同

Jud*_*han 0 java hashset

HashSet不维护其元素的顺序.我将我的应用程序部署到jBoss服务器,我正在观察a的顺序HashSet. 这是随机的.

但是在重新启动我的应用程序服务器之前总是有相同的随机顺序.任何人都可以用底层机制解释这种情况?

我正在深入探讨与一个元素的顺序有关的问题HashSet<Object>.

我们的一些服务器具有始终保持正确的顺序(仍然是随机的)而有些则没有.完成重启后,我想出来了.

izo*_*ica 5

HashSet不能保证它的元素的顺序,但这并不意味着该命令将随机变化.元素的顺序只有在需要重新计算哈希值时才会改变,而这只有在底层哈希表的容量需要改变时才会发生.

Hash容量在不同实现之间的变化可能会有所不同,但保证如果HashSet中的元素数除以loadFactorHashSet的容量超过它,则HashSet的容量会增加.每当容量增加时,重新计算所有元素的哈希码,因此元素的顺序可能改变.