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

Làm thế nào để sử dụng các hoạt động dòng đầu cuối trong JShell trong Java 9?


JShell là một công cụ tương tác lấy các câu lệnh đơn giản, biểu thức và v.v. làm đầu vào, đánh giá nó và in kết quả ngay lập tức cho người dùng.

Hoạt động đầu cuối là hoạt động luồng sử dụng luồng làm đầu vào không quay lại bất kỳ luồng đầu ra nào. Ví dụ:một thao tác đầu cuối có thể được áp dụng cho lambda biểu thức và trả về một kết quả (Một giá trị nguyên thủy / đối tượng hoặc một tập hợp đối tượng ). Giảm () , max () min () các phương thức là một vài thao tác đầu cuối như vậy.

Trong đoạn mã dưới đây, chúng tôi có thể sử dụng các thao tác đầu cuối khác nhau: min () , max () giảm () các phương thức trong JShell.

Đoạn mã

jshell> IntStream.range(1, 11).reduce(0, (n1, n2) -> n1 + n2);
$1 ==> 55

jshell> List.of(23, 12, 34, 53).stream().max();
|  Error:
|  method max in interface java.util.stream.Stream cannot be applied to given types;
|    required: java.util.Comparator
|    found: no arguments
|    reason: actual and formal argument lists differ in length
|    List.of(23, 12, 34, 53).stream().max();
|    ^----------------------------------^

jshell> List.of(23, 12, 34, 53).stream().max((n1, n2) -> Integer.compare(n1, n2));
$2 ==> Optional[53]

jshell> $2.isPresent()
$3 ==> true

jshell> List.of(23, 12, 34, 53).stream().max((n1, n2) -> Integer.compare(n1, n2)).get();
$4 ==> 53

jshell> List.of(23, 12, 34, 53).stream().filter(e -> e%2==1).forEach(e -> System.out.println(e))
23
53

jshell> List.of(23, 12, 34, 53).stream().filter(e -> e%2==1).collect(Collectors.toList());
$6 ==> [23, 53]

jshell> List.of(23, 12, 34, 53).stream().min((n1, n2) -> Integer.compare(n1, n2)).get();
$8 ==> 12