gpt4 book ai didi

java - 将 Stream 转换为单个 IntStream

转载 作者:行者123 更新时间:2023-12-01 06:42:13 25 4
gpt4 key购买 nike

我想转换 List<String>IntStream 。假设我的列表类似于 ["abc", "de", "fghi"] 。然后IntStream我想要的就像 1,1,1,2,2,3,3,3,3 。 (数字 iIntStream 中出现的次数取决于给定列表中 i 第一个字符串的长度)

我为此编写了以下方法(它不会编译):

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>以避免自动装箱并使我的整个系统更加高效。

最佳答案

另一种解决方案是这样的:

IntStream result =  IntStream.range(0,list.size())
.flatMap(i-> IntStream.range(0, list.get(i)
.length())
.map(j->i+1));

关于java - 将 Stream<IntStream> 转换为单个 IntStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55075377/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com