我有一个迭代器,我需要将它传递给一个数组,我可以使用forEachRemaining做数据。
List<Page> array = new ArrayList<>();
iterator.forEachRemaining(array::add);
在其他方面,我可以用流
来做到这一点array = StreamSupport.stream(
Spliterators.spliteratorUnknownSize(
iterator, Spliterator.ORDERED),
false).collect(Collectors.toList());
所以我的问题是哪一个更好?我的意思是,如果一个人的表现比另一个人好。
提前致谢。
答案 0 :(得分:1)
我希望第一种方法表现更好,因为执行的工作较少,而第二种方法涉及内部的几种方法调用以及所有其他类型的东西。
例如,forEachRemaining
定义为;
default void forEachRemaining(Consumer<? super E> action) {
Objects.requireNonNull(action);
while (hasNext())
action.accept(next());
}
另一方面,对stream(Spliterator<T> spliterator, boolean parallel)
的调用会导致更多内部工作,这将对绩效产生影响。
那就是说,第一种方法肯定更具可读性。至于两种方法的确切统计数据,您需要进行衡量。