Könnten Sie es mir bitte erklären? WarumJava 8. Unterschied zwischen collection.stream() und Stream.of (Sammlung)
und
Stream.of(l1, l2).flatMap((x)->Stream.of(x)).forEach((x)->System.out.println(x));
sind anders?
Könnten Sie es mir bitte erklären? WarumJava 8. Unterschied zwischen collection.stream() und Stream.of (Sammlung)
und
Stream.of(l1, l2).flatMap((x)->Stream.of(x)).forEach((x)->System.out.println(x));
sind anders?
Stream
hat keine Stream.of(Collection)
Methode. Er hat eine Methode
static <T> Stream<T> of(T t)
Wenn Sie ein Collection
an diese Methode übergeben werden Sie ein Stream<Collection>
enthält ein Element erhalten (die Collection
), keinen Strom der Elemente der Sammlung.
Als Beispiel versuchen Sie dies:
List<Integer> l1 = Arrays.asList(1, 2, 3);
List<Integer> l2 = Arrays.asList(4, 5, 6);
Stream.of(l1, l2).flatMap((x)->x.stream()).forEach((x)->System.out.println(x));
Stream.of(l1, l2).flatMap((x)->Stream.of(x)).forEach((x)->System.out.println(x));
Die erste Version druckt:
1
2
3
4
5
6
Die zweite Version druckt:
[1, 2, 3]
[4, 5, 6]
Beachten Sie, dass, wenn arr
ein Object[]
ist Sie kann tun Stream.of(arr)
, um einen Strom der Elemente des Arrays zu erhalten. Dies liegt daran, dass es eine andere Version von of
gibt, die Varargs verwendet.
static <T> Stream<T> of(T... values)
ich sehe, danke für Erklärung –
Fand heraus, dass es tatsächlich möglich ist, ein Array in 'Stream.of' zu verwenden, um einen Strom der Elemente des Arrays zu erstellen –
@AlexeyGalanov Das ist wahr. Wenn 'arr' ein' Objekt [] 'ist, können Sie' Arrays.stream (arr) 'oder' Stream.of (arr) 'tun. Beide machen das Gleiche. Sie können 'arr.stream()' jedoch nicht tun, also sollten in Ihrer Frage 'l1' und' l2' Sammlungen sein, keine Arrays. –