W this pytanie zostało już odpowiedział, że oba wyrażenia są równe, ale w tym przypadku są różne wyniki. Dla danego int[] scores
, dlaczego to działa:Arrays.stream (array) vs Arrays.asList (tablica) .stream()
Arrays.stream(scores)
.forEach(System.out::println);
... ale tego nie robi:
Arrays.asList(scores).stream()
.forEach(System.out::println);
O ile wiem .stream()
można wywołać na każdej kolekcji, która wymienia na pewno są. Drugi fragment kodu zwraca po prostu strumień zawierający tablicę jako całość zamiast elementów.
widzę. To po prostu dziwne, ponieważ pamiętam, jak robiłem takie rzeczy w przeszłości i to działało. Czy zadziałałoby, gdybym wcześniej zadeklarował List: "Lista scoresAsList = new ArrayList <> (score);'? –
AdHominem
@AdHominem To by nie działało, ponieważ nie możesz przekazać tablicy do konstruktora 'ArrayList'. Możesz tylko przekazać kolekcję. – Eran
Na marginesie, 'Stream.of (zdobywa) .forEach (System.out :: println);' robi to samo co 'Arrays.asList (wyniki) .stream() foreach (systemu..out :: println); '... – Holger