获取可迭代的前n个元素

Ben*_*ler 0 guava java-7

我有一个Iterable<T>.这个iterable包含m元素.我想创建一个Iterable<T>包含n元素,其中n = min(m, N)一些N用户输入.这些元素应该是n给定iterable 的第一个元素.

理想情况下,返回的Iterable将由原始Iterable而不是元素的副本支持.

是否有神奇的功能可以做到这一点,也许在番石榴?

Xae*_*ess 5

如果我理解正确,你可以使用Iterables#limit(Iterable, int):

使用limitSize给定iterable 的第一个元素创建一个iterable.如果原始iterable不包含那么多元素,则返回的iterable将具有与原始iterable相同的行为.返回的iterable的迭代器支持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
Run Code Online (Sandbox Code Playgroud)