Grund dafür ist, dass Sie immer noch eine Liste von Listen erhalten, ist, weil, wenn Sie Stream::of
anwenden es einen neuen Stream Rückkehr von die vorhandenen.
Das heißt, wenn Sie Stream::of
durchführen, wie es ist mit {{{1,2}}, {{3,4}}, {{5,6}}}
dann, wenn Sie flatMap
ausführen es ist dies gerne tun:
{{{1,2}}, {{3,4}}, {{5,6}}} -> flatMap -> {{1,2}, {3,4}, {5,6}}
// result after flatMap removes the stream of streams of streams to stream of streams
eher können Sie .flatMap(Collection::stream)
verwenden, um einen Strom von Streams zu nehmen wie:
{{1,2}, {3,4}, {5,6}}
und schalten sie ihn in:
{1,2,3,4,5,6}
Daher können Sie Ihre aktuelle Lösung ändern:
List<Integer> result = list.stream().flatMap(Collection::stream)
.collect(Collectors.toList());
Verwenden 'flatMap (Strom -> stream) statt. –
Das hat funktioniert. '.flatMap (l -> l.stream())'. Warum funktioniert das, aber 'Stream :: of' nicht? –
'Stream.of' _adds_ eine Dimension. –