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