【发布时间】:2018-04-21 09:13:17
【问题描述】:
我有一个迭代器 - 放置在我的集合中间的某个位置。
我想从那里循环遍历集合,如果找到它,则返回一个特殊元素。
如果我到达 !hasNext() 那么我想从头开始,但如果我到达我最开始的地方我想停下来。
目前解决该问题的最佳方法似乎是保存“第一个”(我开始时迭代器指向的位置)元素,然后如果我再次找到该元素则停止。
只要项目在我的集合中只能出现一次(即在 HasSet 中),它就可以工作。
任何更好的想法如何做这样的事情?迭代器似乎没有向我提供可以比较的指针/数字。
【问题讨论】:
-
迭代器是什么意思,迭代器是什么意思 - 放置在我的集合中间的某个地方
-
获取
mid到end的两个子列表,结束从start到mid;然后分别迭代它们。 -
HashSet 没有固定的迭代顺序,因此可能是整个“中间迭代器”的最糟糕的例子。 - 但除此之外:您可以只计算您迭代的项目数,并在达到集合大小时停止。
-
是否需要使用迭代器?看起来更像是一个 for 循环。
-
你们可能是对的——我不应该使用迭代器。是否不必更改太多代码 - 但现在我可能会。
标签: java loops collections iterator