標準庫中是否有這樣的東西?它通過調用source.get()
填補了List<T>
:有沒有一種通過多次調用函數來填充List的Java方法?
public static <T> List<T> listFromFunc(int size, Supplier<T> source) {
return IntStream.range(0, size)
.mapToObj(i -> source.get())
.collect(Collectors.toList());
}
在另一方面,示例(使用IntStream.range)會使_much_更好地並行化。 – 2015-02-25 15:40:58
@BrianGoetz這非常有趣。你可以添加一些關於這個主題的更多信息(也許鏈接)? – Pshemo 2015-02-25 15:48:43
limit()操作的語義與遇到順序有關,並且這種耦合成爲對並行性的重要限制。作爲一個例子,設想實現並行的'findFirst'和'findAny';應該很清楚,後者會並行化得更好(因爲一旦找到答案,就不必等待所有早期元素完成)。另一方面,範圍完美分割,因此工作將乾淨地分配跨核心。 – 2015-02-25 16:13:21