এই বিশেষ উদাহরণে আমি মনে করি @ টেগির এটি 100% সঠিক, এটি একটি ফিল্টারে উঠুন এবং দুটি চেক করুন। আমি Optional.ofNullable
returnচ্ছিক স্টাফ ব্যবহার করব না রিটার্ন টাইপের জন্য যুক্তি না করা সত্যিই ... তবে সত্যিকার অর্থেই এখানে বা সেখানে নয়।
আমি এটি উল্লেখ করতে চেয়েছিলাম যে java.util.Objects
একটি বিস্তৃত ক্ষেত্রে এটির জন্য একটি দুর্দান্ত পদ্ধতি রয়েছে, তাই আপনি এটি করতে পারেন:
cars.stream()
.filter(Objects::nonNull)
যা আপনার নাল বস্তুগুলি পরিষ্কার করে দেবে। পরিচিত নয় এমন কারও জন্য, এটি নিম্নলিখিতগুলির জন্য স্বল্প হাত:
cars.stream()
.filter(car -> Objects.nonNull(car))
আঞ্চলিকভাবে প্রশ্নের উত্তর দিয়ে শুরু হওয়া গাড়ির নামের তালিকাটি ফেরত দিতে "M"
:
cars.stream()
.filter(car -> Objects.nonNull(car))
.map(car -> car.getName())
.filter(carName -> Objects.nonNull(carName))
.filter(carName -> carName.startsWith("M"))
.collect(Collectors.toList());
শর্টহ্যান্ড ল্যাম্বডাসে অভ্যস্ত হয়ে গেলে আপনি এটিও করতে পারেন:
cars.stream()
.filter(Objects::nonNull)
.map(Car::getName) // Assume the class name for car is Car
.filter(Objects::nonNull)
.filter(carName -> carName.startsWith("M"))
.collect(Collectors.toList());
দুর্ভাগ্যক্রমে একবার আপনি .map(Car::getName)
কেবল নামগুলির তালিকা ফিরিয়ে আনবেন, গাড়ি নয়। এত কম সুন্দর তবে পুরো প্রশ্নের উত্তর দেয়:
cars.stream()
.filter(car -> Objects.nonNull(car))
.filter(car -> Objects.nonNull(car.getName()))
.filter(car -> car.getName().startsWith("M"))
.collect(Collectors.toList());