[英].collect(Collectors.toList()) and Streams on Java Method
[英]Java, Streams: how to convert expression with.collect(Collectors.toList())
我該如何轉換
List<Integer> list = new ArrayList<>();
IntStream.range(0, 10).forEach(i -> IntStream.range(0, i + 1).forEach(j -> list.add(Math.max(i, j))));
變成單行表達式
List<Integer> list = IntStream.range(0, 10) ... .collect(Collectors.toList());
使用flatMap
:
IntStream.range(0, 10)
.flatMap(i -> IntStream.range(0, i + 1).map(j -> Math.max(i, j)))
.boxed()
.collect(Collectors.toList());
另外,您在這里不需要Math.max
。 在這種情況下, i
總是不小於j
,因此可以更簡單地生成相同的結果:
IntStream.range(0, 10)
.flatMap(i -> IntStream.range(0, i + 1).map(j -> i))
.boxed()
.collect(Collectors.toList());
您可以使用flatMap
實現此目的:
List<Integer> list =
IntStream.range(0,10)
.flatMap(i -> IntStream.range(0, i + 1)
.map(j->Math.max(i,j)))
.boxed()
.collect(Collectors.toList());
編輯:剛剛測試了我的代碼。 似乎mapToObj
無法正常工作,因此您必須使用map
並在以后將流mapToObj
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.