gpt4 book ai didi

Java Iterator循环一次,从中间开始

转载 作者:行者123 更新时间:2023-11-30 10:23:13 24 4
gpt4 key购买 nike

我有一个迭代器 - 放在我的集合中间的某个地方。

我想从那里开始遍历集合,如果找到它就返回一个特殊元素。

如果我到达 !hasNext() 那么我想从头开始,但如果我到达我最先开始的地方我想停下来。

目前解决该问题的最佳想法似乎是保存“第一个”(迭代器在我开始时指向的任何地方)元素,然后在我再次找到该元素时停止。

只要项目在我的集合中(即在 HasSet 中)只能出现一次,这就有效。

关于如何做这样的事情有更好的想法吗?迭代器似乎没有向我提供可以比较的指针/数字。

最佳答案

使用 Guava 迭代器(Java 7):

Iterator<YourType> iterator = Iterators.concat(yourIteratorPlaceSomewhereInMiddle, Iterators.limit(yourCollection.iterator(), positionOfSomewhereInMiddle));

使用流(Java 8):

Optional<YourType> theAnswer = IntStream.iterate(positionOfSomewhereInMiddle, pos -> ++pos)
.map(pos -> pos % sizeOfCollection)
.mapToObj(yourCollection::get)
.limit(sizeOfCollection)
.filter(element -> element is 42)
.findFirst();

关于Java Iterator循环一次,从中间开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47183841/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com