我希望将流转换为不可变列表。以下方法之间有什么区别?从绩效角度来看哪个更好?
collect( Collectors.collectingAndThen(Collectors.toList(), ImmutableList::copyOf));
ImmutableList.copyOf( stream.iterator() );
collect( Collector.of(
ImmutableList.Builder<Path>::new,
ImmutableList.Builder<Path>::add,
(l, r) -> l.addAll(r.build()),
ImmutableList.Builder<Path>::build) );
有关性能或效率的更多参数,
列表/集合中可能有许多条目。
如果我希望使用自定义比较器的中间操作".sorted()"
对集进行排序,该怎么办。
.parallel()
该怎么办?
醇>
答案 0 :(得分:3)
对于系统性能,您需要进行测量。
对于编程性能,请使用最清晰的方法。仅从外观来看,我最喜欢第二个,我认为那里没有明显的低效率。
答案 1 :(得分:2)
我希望1)是最有效的:通过额外的构建器看起来似乎不太可读并且不可能胜过正常toList()
,并且从迭代器复制会丢弃大小调整信息。
(但是Guava正致力于为这样的Java 8添加支持,您可能只是等待它。)