Computer >> Máy Tính >  >> Lập trình >> Java

Làm thế nào để sử dụng các hoạt động luồng trung gian trong JShell trong Java 9?


JShell là một công cụ được giới thiệu trong Java 9 và nó chấp nhận các câu lệnh đơn giản như biểu thức, biến, phương thức, lớp, v.v. làm đầu vào và tạo ra kết quả ngay lập tức.

A Luồng là một chuỗi các giá trị. Hoạt động luồng trung gian là một hoạt động thực hiện một luồng. Ví dụ:nó có thể được áp dụng cho một biểu thức lambda và tạo ra một luồng phần tử khác là kết quả của nó.

Các hoạt động luồng trung gian phổ biến nhất được đề cập bên dưới:

  • 1) đã sắp xếp (): Do đó, phương pháp này bảo toàn các phần tử của luồng tiêu thụ nhưng cũng đặt chúng theo thứ tự được sắp xếp tự nhiên.
  • 2) difference (): Phương thức này trả về một luồng chỉ giữ lại các phần tử duy nhất của luồng đầu vào và nó có thể duy trì thứ tự tương đối của các phần tử được giữ lại.
  • 3) filter (): Phương pháp này có thể được sử dụng để lọc các phần tử của luồng dựa trên một số logic.
  • 4) map (): Phương thức này áp dụng biểu thức lambda để tính toán các kết quả mới từ các phần tử dòng đầu vào. Sau đó, nó trả về một luồng các kết quả này dưới dạng đầu ra.


Trong đoạn mã dưới đây, chúng tôi có thể triển khai các hoạt động luồng trung gian khác nhau trong công cụ JShell.

Đoạn mã

jshell> List<Integer> numbers = List.of(3, 10, 23, 200, 77, 9, 32);
numbers ==> [3, 10, 23, 200, 77, 9, 32]

jshell> numbers.stream().sorted().forEach(elem -> System.out.println(elem));
3
9
10
23
32
77
200

jshell> List<Integer> numbers = List.of(3, 5, 54, 280, 5, 9, 40);
numbers ==> [3, 5, 54, 280, 5, 9, 40]

jshell> numbers.stream().distinct().forEach(elem -> System.out.println(elem));
3
5
54
280
9
40

jshell> numbers.stream().distinct().sorted().forEach(elem -> System.out.println(elem));
3
5
9
40
54
280

jshell> numbers.stream().distinct().map(num -> num * num).forEach(elem -> System.out.println(elem));
9
25
2916
78400
81
1600