获取迭代器的简单而快速的方法是什么?从List
开始返回至多N个元素?将ListIterator限制为前N个元素(已优化)
我能想出的最简单的版本是:
#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
其显著影响性能我在紧密的循环中调用这个方法数百万次。
是否有任何其他库函数可用于此?
注:我无法避免遍历列表,因为我将它传递给这需要一个迭代器作为参数的方法,我不能修改这个类。
除了'Iterators',请注意['Iterables'也有'limit()'方法](http://docs.guava- libraries.googlecode.com/git/javadoc/com/google/common/collect/Iterables.html#limit(java.lang.Iterable,%20int))。所以如果你有'List',最简单的做'Iterables.limit(aList,3)'。 – Jonik 2014-07-08 07:52:43