Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

จะใช้การทำงานของเทอร์มินัลสตรีมใน JShell ใน Java 9 ได้อย่างไร


JShell เป็น เครื่องมือโต้ตอบ ที่รับคำสั่ง นิพจน์ทั่วไป และอื่นๆ เป็นการป้อนข้อมูล ประเมิน และพิมพ์ผลลัพธ์ไปยังผู้ใช้ทันที

การทำงานของเทอร์มินัล เป็นการดำเนินการสตรีมที่ใช้ สตรีมเป็นอินพุต และ ไม่คืน สตรีมเอาต์พุตใด ๆ ตัวอย่างเช่น การทำงานของเทอร์มินัลสามารถใช้กับ แลมบ์ดา การแสดงออก และส่งกลับผลลัพธ์เดียว (A primitive-value/object . เดียว หรือ ของสะสมของวัตถุ . เดียว ). ลด() , สูงสุด() และ นาที() เมธอดเป็นการดำเนินการของเทอร์มินัลสองวิธี

ในข้อมูลโค้ดด้านล่าง เราสามารถใช้การทำงานของเทอร์มินัลที่แตกต่างกัน:min() , สูงสุด() และ reduce() เมธอดใน JShell

ตัวอย่าง

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