两个java.util.Iterators到同一个集合:他们必须以相同的顺序返回元素吗?

Jan*_*sch 4 java api collections iterator contract

这更像是一个理论问题.如果我有一个c没有排序的任意集合,我java.util.Iterator通过调用c.iterator()两次得到两个,那么两个迭代器都必须以c相同的顺序返回元素吗?

我的意思是,在实践中他们可能永远都会,但他们是否被迫通过合同这样做?

谢谢,Jan

Mat*_*der 7

不,他们不是.

"对于返回元素的顺序没有任何保证(除非这个集合是某个提供保证的类的实例)."

请参阅Collection#iterator api合约.

这包括从一个迭代器到下一个迭代器(因为它没有说明要求它).

还要考虑在获取这两个迭代器之间的底层集合中可能发生了某些变化!添加或删除的东西.