2012-05-24 21 views

回答

7

不,他们不是。

“有关于它的元素是 返回(除非该集合是一些类 提供担保的实例)的顺序没有保证。”

查看Collection#iterator api contract

这包括从一个迭代到下一个(因为它并没有说明要求什么)。

还要考虑的东西可以在底层集合在获得这两个迭代器之间已经改变了!添加或删除了某些东西。

+0

'没有关于元素返回顺序的保证。但是,如果OP询问c.iterator()是否被调用了两次,那么这两个迭代器的结果将是相同的顺序。 –

+0

这也是在我的答案中解决的。 –

+0

+1。只有Jon Skeet可以说更好。 –

2

迭代器的实现由特定的Collection类提供。迭代器列表会给有序的元素,同时设置不会

+0

虽然这不是问题。 –

+1

嗯......如果订单比不管你有多少时间打电话你会得到相同的顺序中的元素(如表的情况下),同时在集合的情况下,如果你把它放在这不会是情况 –

+0

确定不够公平存在保证像那样。 –

1

由于大多数数据结构在默认情况下不下令所以现在还不能确定,他们将在同一顺序迭代。

如果你想要相同的订单,你必须先排序收集。

相关问题