Trong câu hỏi this nó đã được trả lời rằng cả hai biểu thức đều bằng nhau, nhưng trong trường hợp này chúng tạo ra các kết quả khác nhau. Đối với một int[] scores
nhất định, tại sao công việc này:Arrays.stream (mảng) vs Arrays.asList (mảng) .stream()
Arrays.stream(scores)
.forEach(System.out::println);
... nhưng điều này không:
Arrays.asList(scores).stream()
.forEach(System.out::println);
Theo như tôi biết .stream()
có thể được gọi vào bất kỳ Collection, mà Lists chắc chắn đang có. Đoạn mã thứ hai chỉ trả về một luồng chứa toàn bộ mảng thay vì các phần tử.
tôi nhìn thấy. Nó chỉ là lạ bởi vì tôi nhớ tôi làm công cụ như vậy trong quá khứ và nó đã làm việc. Nó có hoạt động không nếu tôi đã tuyên bố trước Danh sách như thế này: 'Danh sách scoreAsList = new ArrayList <> (điểm); '? –
AdHominem
@AdHominem Điều đó sẽ không hoạt động, vì bạn không thể chuyển mảng vào một hàm tạo 'ArrayList'. Bạn chỉ có thể vượt qua một Bộ sưu tập. – Eran
Như một lưu ý phụ, 'Stream.of (điểm) .forEach (System.out :: println);' cũng giống như 'Arrays.asList (điểm) .stream(). ForEach (Hệ thống.out :: println); '… – Holger