In this Frage wurde bereits beantwortet, dass beide Ausdrücke gleich sind, aber in diesem Fall produzieren sie unterschiedliche Ergebnisse. Für eine gegebene int[] scores
, warum funktionierts:Arrays.stream (Array) vs Arrays.asList (Array) .stream()
Arrays.stream(scores)
.forEach(System.out::println);
... aber nicht:
Arrays.asList(scores).stream()
.forEach(System.out::println);
Soweit ich .stream()
wissen kann auf jeder Sammlung genannt werden, die auf jeden Fall sind Listen. Das zweite Code-Snippet gibt nur einen Stream zurück, der das Array als Ganzes anstelle der Elemente enthält.
Ich sehe mit streamen. Es ist einfach komisch, weil ich mich erinnere, dass ich in der Vergangenheit so etwas gemacht habe und es funktioniert hat. Hätte es funktioniert, wenn ich die Liste im Voraus so erklärt hätte: 'List scoresAsList = new ArrayList <> (scores);'? –
AdHominem
@AdHominem Das würde nicht funktionieren, da Sie kein Array an einen 'ArrayList'-Konstruktor übergeben können. Sie können nur eine Sammlung übergeben. – Eran
Als eine Nebenbemerkung, 'Stream.of (scores) .forEach (System.out :: println);' tut das gleiche wie 'Arrays.asList (scores) .stream(). ForEach (System.out :: println; '... – Holger