什么是获取从 a 的开头最多返回 N 个元素的迭代器的简单快速的方法List
?
我能想到的最简单的版本是:
#1:
import com.google.common.collect.Iterators;
// ...
public static <E> Iterator<E> lengthLimitedIterator(Iterable<E> source, int maxLen) {
return Iterators.partition(source.iterator(), maxLen).next().iterator();
}
#2:
public static <E> Iterator<E> lengthLimitedIterator(List<E> source, int maxLen) {
return source.subList(0, Math.min(source.size(), maxLen)).iterator();
}
不幸的是,这两个版本都创建了一个临时的List
,这会显着影响性能,因为我在一个紧密的循环中调用了这个方法数百万次。
我可以为此使用任何其他库函数吗?
注意:我无法避免迭代列表,因为我将它传递给一个以迭代器作为参数的方法,并且我无法修改该类。