一尘不染

HashSet的迭代顺序

algorithm

如果每个对象添加到java.util.HashSet中器具的Object.Equals()和是Object.hashCode()以确定方式,是迭代顺序在HashSet的保证用于每加入相同组元素是相同的,
而不管 的他们被添加的顺序?

额外的问题:插入顺序也一样怎么办?

(假定Sun JDK6具有相同的HashSet初始化。)

编辑:
我最初的问题尚不清楚。它与HashSet的一般合同无关,而是与Sun在JDK6中对HashSet的实现所提供的有关确定性的保证有关。是天生的不确定性吗?哪些因素会影响其Iterator使用的顺序?


阅读 304

收藏
2020-07-28

共1个答案

一尘不染

绝对不。

每当发生桶碰撞时,插入顺序都会直​​接影响迭代顺序:

当两个元素最终位于同一个存储桶中时,插入的第一个元素也将是迭代过程中返回的第一个元素,至少在冲突处理和迭代的实现很简单的情况下(Sun的java.util.HashMap一个)

2020-07-28