dlatego że jesteś nadal otrzymuje listę list dlatego podczas stosowania Stream::of
to powrót nowy strumień istniejące.
To jest podczas wykonywania Stream::of
To tak, jakby {{{1,2}}, {{3,4}}, {{5,6}}}
następnie podczas wykonywania flatMap
to jak to zrobić:
{{{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
raczej można użyć .flatMap(Collection::stream)
wziąć strumień strumieni, takich jak:
{{1,2}, {3,4}, {5,6}}
i zmień na:
{1,2,3,4,5,6}
Dlatego można zmienić aktualny rozwiązanie:
List<Integer> result = list.stream().flatMap(Collection::stream)
.collect(Collectors.toList());
użyć 'flatMap (strumień -> stream) 'zamiast tego. –
To zadziałało. '.flatMap (l -> l.stream())'. Dlaczego to działa, ale 'Stream :: of' nie działa? –
'Stream.of' _adds_ a dimension. –