একটি List
এবং এর stream()
পদ্ধতি ব্যবহার করার সময় আমি কেবল একটি প্রশ্ন জুড়ে এসেছি । আমি কীভাবে এগুলি ব্যবহার করব তা জানার পরেও কখন সেগুলি ব্যবহার করব সে সম্পর্কে আমি নিশ্চিত নই ।
উদাহরণস্বরূপ, আমার কাছে একটি তালিকা রয়েছে, এতে বিভিন্ন স্থানে বিভিন্ন পাথ রয়েছে। এখন, আমি যাচাই করতে চাই যে কোনও একক, প্রদত্ত পথে তালিকায় নির্দিষ্ট করা কোনও পাথ রয়েছে। boolean
শর্তটি পূরণ হয়েছিল কি না তার ভিত্তিতে আমি একটি ফিরিয়ে দিতে চাই ।
অবশ্যই এটি প্রতি কঠিন কাজ নয়। তবে আমি অবাক হই যে আমার স্ট্রিম ব্যবহার করা উচিত, না (-আচ) লুপের জন্য।
ক্রমতালিকা
private static final List<String> EXCLUDE_PATHS = Arrays.asList(new String[]{
"my/path/one",
"my/path/two"
});
উদাহরণ - স্ট্রিম
private boolean isExcluded(String path){
return EXCLUDE_PATHS.stream()
.map(String::toLowerCase)
.filter(path::contains)
.collect(Collectors.toList())
.size() > 0;
}
উদাহরণ - প্রতিটি লুপের জন্য
private boolean isExcluded(String path){
for (String excludePath : EXCLUDE_PATHS) {
if(path.contains(excludePath.toLowerCase())){
return true;
}
}
return false;
}
মনে রাখবেন যে path
প্যারামিটারটি সর্বদা ছোট হাতের থাকে ।
আমার প্রথম অনুমানটি হ'ল প্রতি-প্রত্যক্ষের পদ্ধতিটি দ্রুত, কারণ শর্তটি পূরণ হলে লুপটি তত্ক্ষণাত্ ফিরে আসবে। ফিল্টারিং সম্পূর্ণ করার জন্য স্ট্রিমটি এখনও সমস্ত তালিকা এন্ট্রি থেকে লুপ করবে।
আমার ধারণা সঠিক? যদি তা হয় তবে আমি কেন (বা কখন ) stream()
তখন ব্যবহার করব ?