2016-06-30 6 views
-1

У меня есть Iterable<T>. Этот итерабельный элемент содержит m элементов. Я хотел бы создать Iterable<T>, который содержит n элементов, где n = min(m, N) для некоторого N, который вводит пользователь. Эти элементы должны быть первыми n элементами данного итерабельного.Получить первые n элементов итерабельного

В идеале возвращенный Iterable будет подкреплен оригиналом Iterable, а не копией элементов.

Есть ли волшебная функция, которая делает это, возможно, в Гуаве?

+0

FluentIterable.limit() –

ответ

5

Если я правильно понял, вы можете использовать Iterables#limit(Iterable, int):

Создает итератор с первыми limitSize элементов данной итерации. Если исходный итеративный номер не содержит много элементов, возвращаемый итерабель будет иметь такое же поведение, что и исходный итерируемый. Итератор возвращаемого итератора поддерживает remove(), если оригинальный итератор делает.

Пример:

Iterable<Integer> limitedToTwoElements = Iterables.limit(someIterable, 2); 
// wrapped iterable will have size 2, obviously 
// ...unless original iterable is smaller, then it'll have size equal to original 
+0

Прохладный, спасибо. Должно быть, это пропустило. Имя не так информативно :) –

Смежные вопросы