我使用Set#iterator().next();
所有的本身,我想知道,如果:從一個集合的迭代器中獲取第一個項目會返回一個隨機值嗎?
A)請問導致內存泄漏,或者至少任何一種可以避免的開銷,
和
B)無論它是否返回項目都是隨機項目,如果我多次使用此方法,它會每次都提供一個不同的項目?
我使用Set#iterator().next();
所有的本身,我想知道,如果:從一個集合的迭代器中獲取第一個項目會返回一個隨機值嗎?
A)請問導致內存泄漏,或者至少任何一種可以避免的開銷,
和
B)無論它是否返回項目都是隨機項目,如果我多次使用此方法,它會每次都提供一個不同的項目?
返回迭代的下一個元素。
這意味着它將按照它們存儲在Set
中的順序返回物品。並且關於不同的物品,是,它會一直返回下一個(不同)物品(直到物品剩餘的物品更多),並且一旦它耗盡了所有物品就會終止(通過投擲NoSuchElementException
)。
Iterator<E> iterator()
返回在此組中的元素的迭代器。 元素以特定順序返回(除非此集合是某個提供擔保的類的實例)。
http://docs.oracle.com/javase/7/docs/api/java/util/Set.html#iterator()
如果您需要在每次通過Set迭代時間來在同一順序的元素,嘗試保證爲了這些特定的實現方式之一:
前兩個基於它們插入在所述一組(插入順序)的數量級上的元素實現SortedSet接口。