Как я могу сделать итератор, который никогда не заканчивается?

Думаю, тебе бы гораздо лучше привыкнуть к этому. Источник в верхнем левом углу с большинством основанных на пикселях видео / экранных API.

Вот обсуждение на тему .

8
задан soldier.moth 19 June 2009 в 06:29
поделиться

5 ответов

В отличной библиотеке Google Collections есть метод, который делает это:

Set<String> names = ...;
Iterable<String> infinite = Iterables.cycle(names);

(Я не могу рекомендовать библиотеку Google Collections достаточно сильно. Она очень крутая. Я пристрастен, поскольку работаю в Google, но думаю, что почти каждый гуглер, пишущий на Java, скажет вам, насколько полезны коллекции.)

36
ответ дан 5 December 2019 в 04:39
поделиться

Это то, о чем я могу думать ...

iterator = set.getIterator
//other code
if (iterator.hasNext())
    //do code here
else
    iterator = set.getIterator();
1
ответ дан 5 December 2019 в 04:39
поделиться

Если вы создаете итератор, в следующем методе вы можете иметь условие if, которое проверяет если в списке есть еще один объект. Если есть, то вы возвращаете этот объект, если его нет, вы возвращаетесь в начало списка и возвращаете этот объект.

1
ответ дан 5 December 2019 в 04:39
поделиться
Iterator it = mylist.iterator();
while (it.hasNext())
{
  MyType t = (MyType)it.next();

  // do something

  if (!it.hasNext())
    it = mylist.iterator();
}
5
ответ дан 5 December 2019 в 04:39
поделиться

Думаю, то, что вам нужно, никогда не поможет. Вы можете делать что угодно с помощью своего итератора это легко, но вы должны быть осторожны с любыми новыми вещами, которые вы добавляете. Они не используются в этом стиле, но это то, что вам нужно:

if (! It.hasNext ()) { while (It.hasPrevious ()) { It = It.Previous (); } } else { It = It. Next (); }

Этот способ ничего не стоит, если вы действительно заинтересованы, вы должны вместо этого всегда делать следующий указатель с последнего на первый при нажатии нового списка.

0
ответ дан 5 December 2019 в 04:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: