Lý do được rằng bạn vẫn đang nhận được một danh sách liệt kê là bởi vì khi bạn áp dụng Stream::of
nó trả về một dòng mới của những cái hiện có.
Đó là khi bạn thực hiện Stream::of
nó giống như có {{{1,2}}, {{3,4}}, {{5,6}}}
sau đó khi bạn thực hiện flatMap
nó giống như làm điều này:
{{{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
thay vì bạn có thể sử dụng .flatMap(Collection::stream)
để có một dòng suối như:
{{1,2}, {3,4}, {5,6}}
và biến nó thành:
{1,2,3,4,5,6}
Vì vậy, bạn có thể thay đổi giải pháp hiện tại của bạn để:
List<Integer> result = list.stream().flatMap(Collection::stream)
.collect(Collectors.toList());
Nguồn
2017-05-29 23:53:16
Sử dụng 'flatMap (dòng -> stream) 'thay thế. –
Đã hiệu quả. '.flatMap (l -> l.stream())'. Tại sao nó hoạt động, nhưng 'Stream :: of' thì không? –
'Stream.of' _adds_ một thứ nguyên. –