Я хочу преобразовать List<String>
в IntStream
. Предположим, что мой список похож на ["abc", "de", "fghi"]
. Тогда IntStream
, который я хочу, похож на 1,1,1,2,2,3,3,3,3
. (Количество вхождений числа i
в IntStream
зависит от длины 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>
, чтобы избежать автоматической блокировки и повысить эффективность всей моей системы.