獲取迭代器的簡單而快速的方法是什麼?從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