Bạn có thể giải thích cho tôi không? Tại saoJava 8. Sự khác biệt giữa collection.stream() và Stream.of (bộ sưu tập)
và
Stream.of(l1, l2).flatMap((x)->Stream.of(x)).forEach((x)->System.out.println(x));
là khác nhau?
Bạn có thể giải thích cho tôi không? Tại saoJava 8. Sự khác biệt giữa collection.stream() và Stream.of (bộ sưu tập)
và
Stream.of(l1, l2).flatMap((x)->Stream.of(x)).forEach((x)->System.out.println(x));
là khác nhau?
Stream
không có phương thức Stream.of(Collection)
. Nó không có một phương pháp
static <T> Stream<T> of(T t)
Nếu bạn vượt qua một Collection
với phương pháp này, bạn sẽ nhận được một một yếu tố Stream<Collection>
chứa (các Collection
), không phải là một dòng của các yếu tố của bộ sưu tập.
Như một ví dụ, hãy thử này:
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));
Phiên bản đầu tiên in:
1
2
3
4
5
6
Thứ hai phiên bản in:
[1, 2, 3]
[4, 5, 6]
Lưu ý rằng nếu arr
là một Object[]
bạn có thể làm Stream.of(arr)
để xem luồng các phần tử của mảng. Điều này là do có một phiên bản khác của of
sử dụng varargs.
static <T> Stream<T> of(T... values)
tôi thấy, nhờ giải thích –
Tìm thấy ra rằng nó thực sự có thể sử dụng một mảng trong 'Stream.of' để tạo ra một dòng của các yếu tố của mảng –
@AlexeyGalanov Đó là sự thật. Nếu 'arr' là một' Object [] 'bạn có thể làm' Arrays.stream (arr) 'hoặc' Stream.of (arr) '. Cả hai đều làm điều tương tự. Bạn không thể làm 'arr.stream()' mặc dù, vì vậy trong câu hỏi của bạn 'l1' và' l2' phải là các bộ sưu tập, không phải mảng. –