আমি শুধু বলতে করবে হুঁশিয়ার findFirst()
আর findAny()
যখন ব্যবহার করে।
তাদের জাভাডোকের হিসাবে ( এখানে এবং এখানে ) উভয় পদ্ধতিই স্ট্রিম থেকে একটি স্বেচ্ছাসেবী উপাদান ফেরত দেয় - যদি না স্ট্রিমের একটি এনকাউন্টার অর্ডার না হয়, সেক্ষেত্রে যে কোনও ক্ষেত্রে findFirst()
প্রথম উপাদান ফিরে আসে এবং findAny()
কোনও উপাদান ফিরে আসবে।
মনে করুন list
ISBN এবং বুকের নাম সহ আমাদের কাস্টম রয়েছে। একটি দৃশ্যের জন্য এই উদাহরণটি দেখুন:
public class Solution {
private Integer ISBN;
private String BookName;
public Solution(int i, String string) {
ISBN =i;
BookName = string;
}
}
public static void main(String[] args) {
List<Solution> Library = Arrays.asList(new Solution(12,"Java in Action"),new Solution(13,"Java 8"),new Solution(15,"Java 8 Features"),new Solution(16,"Java in Action"));
System.out.println(Library.stream()
.map(p->p.getBookName())
.sorted(Comparator.reverseOrder())
.findFirst());
}
আউটপুট :Optional[Java in Action]
যখন বইয়ের নাম একই হয় তবে আইএসবিএন সংখ্যাগুলি পৃথক হতে পারে এমন পরিস্থিতিতেও থাকতে পারে, সেক্ষেত্রে বইটি বাছাই করা এবং সন্ধান করা অনেকটা অনুরূপ হতে পারে findAny()
এবং ভুল ফল দেয়। এমন একটি দৃশ্যের কথা চিন্তা করুন যেখানে 5 টি বইয়ের নাম "জাভা রেফারেন্স" রয়েছে তবে বিভিন্ন আইএসবিএন নম্বর রয়েছে এবং findFirst()
নাম অনুসারে বইয়ের ফলাফল একই রকম হবে findAny()
।
একটি দৃশ্যের কথা চিন্তা করুন যেখানে:
ISBN Name Of book
+-----+------------------+
| 100 | Java-8 in Action |
+-----+------------------+
| 101 | Java-8 in Action |
+-----+------------------+
| 102 | Java-8 in Action |
+-----+------------------+
| 103 | Java-8 in Action |
+-----+------------------+
| 104 | Java-8 in Action |
+-----+------------------+
এখানে FindFirst () এবং FindAny () বুকবাইনেমে বাছাই করা হলেও একই ফল দেবে।
বিস্তারিত নিবন্ধ:
filter
তা প্রয়োগ হওয়ার পরেও ,findAny
প্রয়োগকৃত ফিল্টারটির সাথে মেলে না এমন সহ যে কোনও উপাদান ফিরে আসতে পারে?