স্ট্রিমগুলি বিভিন্ন ক্রিয়াকলাপের সংমিশ্রণের জন্য আরও ভাল বিমূর্ততা সরবরাহ করে যা আপনি সংগ্রহ করতে বা ডেটা স্ট্রিমের শীর্ষে আসতে চান Especially বিশেষত যখন আপনাকে উপাদানগুলির মানচিত্র তৈরি করতে, ফিল্টার করে রূপান্তর করতে হয়।
আপনার উদাহরণ খুব ব্যবহারিক নয়। ওরাকল সাইট থেকে নিম্নলিখিত কোডটি বিবেচনা করুন ।
List<Transaction> groceryTransactions = new Arraylist<>();
for(Transaction t: transactions){
if(t.getType() == Transaction.GROCERY){
groceryTransactions.add(t);
}
}
Collections.sort(groceryTransactions, new Comparator(){
public int compare(Transaction t1, Transaction t2){
return t2.getValue().compareTo(t1.getValue());
}
});
List<Integer> transactionIds = new ArrayList<>();
for(Transaction t: groceryTransactions){
transactionsIds.add(t.getId());
}
স্ট্রিম ব্যবহার করে লেখা যেতে পারে:
List<Integer> transactionsIds =
transactions.stream()
.filter(t -> t.getType() == Transaction.GROCERY)
.sorted(comparing(Transaction::getValue).reversed())
.map(Transaction::getId)
.collect(toList());
দ্বিতীয় বিকল্পটি অনেক বেশি পঠনযোগ্য। সুতরাং যখন আপনি আংশিক প্রক্রিয়াজাতকরণগুলি লুপগুলি বা বিভিন্ন লুপগুলি নেস্ট করেছেন, তখন এটি স্ট্রিমস / ল্যাম্বদা এপিআই ব্যবহারের জন্য খুব ভাল প্রার্থী।