【发布时间】:2019-03-09 08:21:57
【问题描述】:
我想将List<String> 转换为IntStream。假设我的列表类似于["abc", "de", "fghi"]。然后我想要的IntStream 就像1,1,1,2,2,3,3,3,3。 (IntStream 中数字i 的出现次数取决于给定列表中ith 字符串的长度)
我为此编写了以下方法(它不会编译):
private static IntStream getSingleIntStream(List<String> list) {
final AtomicInteger atomicInteger = new AtomicInteger();
return list.stream()
.map(str -> {
atomicInteger.incrementAndGet();
return IntStream.range(0, str.length())
.map(i -> atomicInteger.get());
}); // Now I don't understand how can I convert this Stream<IntStream> to a single IntStream
}
但我不明白如何转换我可以将Stream<IntStream> 转换为单个IntStream。 (我的猜测是我们可以以某种方式使用flatMap,但我不完全了解如何使用它。)
我使用IntStream 而不是Stream<Integer> 来避免自动装箱并使我的整个系统更高效。
【问题讨论】:
标签: java java-8 java-stream