这更像是一个理论问题。如果我有一个未排序的任意集合c
并且我java.util.Iterator
通过调用两次获得两个 s ,那么两个迭代器是否必须以相同的顺序c.iterator()
返回's 元素?c
我的意思是,在实践中,他们可能总是会这样做,但他们是否被迫通过合同这样做?
谢谢,扬
这更像是一个理论问题。如果我有一个未排序的任意集合c
并且我java.util.Iterator
通过调用两次获得两个 s ,那么两个迭代器是否必须以相同的顺序c.iterator()
返回's 元素?c
我的意思是,在实践中,他们可能总是会这样做,但他们是否被迫通过合同这样做?
谢谢,扬
不,他们不是。
“没有关于元素返回顺序的保证(除非这个集合是某个提供保证的类的实例)。”
请参阅Collection#iterator api 合同。
这包括从一个迭代器到下一个迭代器(因为它没有说明任何要求)。
还要考虑在获取这两个迭代器之间的基础集合中可能发生了一些变化!添加或删除的东西。
迭代器的实现由特定的 Collection 类提供。List 的迭代器将给出有序元素,而 Set 不会
因为大多数数据结构默认情况下没有排序,所以不确定它们是否会以相同的顺序迭代。
如果您想要相同的顺序,则必须先对集合进行排序。