JShell হলো একটি ইন্টারেক্টিভ টুল যা সিম্পল স্টেটমেন্ট, এক্সপ্রেশন ইত্যাদি ইনপুট হিসেবে নেয়, ইভ্যালুয়েট করে, এবং ফলাফল অবিলম্বে ইউজারের কাছে প্রিন্ট করে।
টার্মিনাল অপারেশন হলো একটি স্ট্রিম অপারেশন যা স্ট্রিম ইনপুট হিসেবে নেয় এবং কোনো আউটপুট স্ট্রিম রিটার্ন করে না। উদাহরণস্বরূপ, একটি টার্মিনাল অপারেশন একটি ল্যাম্বডা এক্সপ্রেশন-এ অ্যাপ্লাই করা যেতে পারে এবং একটি সিঙ্গল রেজাল্ট রিটার্ন করে (একটি সিঙ্গল প্রিমিটিভ-ভ্যালু/অবজেক্ট, বা একটি সিঙ্গল কলেকশন-অফ-অবজেক্টস)। reduce(), max(), এবং min() মেথডগুলো এর উদাহরণ।
নিচের কোড স্নিপেটে, আমরা JShell-এ ভিন্ন ভিন্ন টার্মিনাল অপারেশন ব্যবহার করতে পারি: min(), max(), এবং reduce() মেথড।
স্নিপেট
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 super java.lang.Integer> | found: no arguments | 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