获取可迭代对象的前 n 个元素
Get first n elements of an iterable
我有一个 Iterable<T>
。这个可迭代对象包含 m
个元素。我想创建一个包含 n
元素的 Iterable<T>
,其中 n = min(m, N)
用于用户输入的某些 N
。这些元素应该是给定可迭代对象的前 n
个元素。
理想情况下,返回的 Iterable
将由原始 Iterable
而不是元素的副本支持。
是否有执行此操作的魔法函数,也许在 Guava 中?
如果我没理解错的话,你可以用Iterables#limit(Iterable, int)
:
Creates an iterable with the first limitSize
elements of the given iterable. If the original iterable does not contain that many elements, the returned iterable will have the same behavior as the original iterable. The returned iterable's iterator supports remove()
if the original iterator does.
示例:
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
我有一个 Iterable<T>
。这个可迭代对象包含 m
个元素。我想创建一个包含 n
元素的 Iterable<T>
,其中 n = min(m, N)
用于用户输入的某些 N
。这些元素应该是给定可迭代对象的前 n
个元素。
理想情况下,返回的 Iterable
将由原始 Iterable
而不是元素的副本支持。
是否有执行此操作的魔法函数,也许在 Guava 中?
如果我没理解错的话,你可以用Iterables#limit(Iterable, int)
:
Creates an iterable with the first
limitSize
elements of the given iterable. If the original iterable does not contain that many elements, the returned iterable will have the same behavior as the original iterable. The returned iterable's iterator supportsremove()
if the original iterator does.
示例:
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