Apache Commons Collections লাইব্রেরি একটি শক্তিশালী টুল যা Java ডেভেলপারদের জন্য বিভিন্ন কার্যকরী ইউটিলিটি প্রদান করে। এর মধ্যে একটি গুরুত্বপূর্ণ বৈশিষ্ট্য হল Filtering Collections। এটি কালেকশনগুলির মধ্যে নির্দিষ্ট শর্তে উপাদান ফিল্টার করার জন্য ব্যবহৃত হয়।
Filtering Collections একটি শক্তিশালী এবং নমনীয় প্রক্রিয়া যা কালেকশনের উপাদানগুলিকে নির্দিষ্ট শর্তের উপর ভিত্তি করে নির্বাচন বা বাদ দিতে সাহায্য করে। আপনি predicate ব্যবহার করে এক বা একাধিক শর্তের ভিত্তিতে উপাদানগুলিকে ফিল্টার করতে পারেন।
Filtering কালেকশনকে একটি শর্ত বা predicate দ্বারা ফিল্টার করা হয়। Predicate হল একটি ফাংশনাল প্রোগ্রামিং কনসেপ্ট যা একটি ইনপুট গ্রহণ করে এবং একটি বুলিয়ান মান (true/false) রিটার্ন করে। এটি নির্ধারণ করে যে কোন উপাদানটি সংগ্রহের মধ্যে থাকবে এবং কোনটি বাদ যাবে।
Apache Commons Collections লাইব্রেরিতে CollectionUtils.select()
এবং CollectionUtils.filter()
এর মতো মেথড রয়েছে যা collections ফিল্টার করতে ব্যবহৃত হয়।
CollectionUtils.select()
CollectionUtils.select()
মেথডটি একটি predicate
এর মাধ্যমে একটি কালেকশনের উপাদানগুলিকে নির্বাচন করে। এটি একটি নতুন কালেকশন তৈরি করে যা শুধুমাত্র সেই উপাদানগুলো ধারণ করে যেগুলি predicate শর্তে পাস করে।
CollectionUtils.select()
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Predicate;
import java.util.Arrays;
import java.util.List;
public class FilteringExample {
public static void main(String[] args) {
List<String> list = Arrays.asList("apple", "banana", "orange", "avocado");
// Define the predicate (filter out strings starting with 'a')
Predicate<String> startsWithA = new Predicate<String>() {
@Override
public boolean evaluate(String object) {
return object.startsWith("a");
}
};
// Use CollectionUtils.select to filter the list
List<String> filteredList = (List<String>) CollectionUtils.select(list, startsWithA);
// Print the filtered list
System.out.println("Filtered List: " + filteredList);
}
}
Filtered List: [apple, avocado]
startsWithA
একটি predicate যা শুধুমাত্র সেই উপাদানগুলো নির্বাচন করে যেগুলির নাম "a"-এ শুরু হয়।CollectionUtils.select()
মেথডটি নতুন একটি কালেকশন তৈরি করেছে, যেটিতে শুধুমাত্র "apple" এবং "avocado" রয়েছে।CollectionUtils.filter()
CollectionUtils.filter()
মেথডটি একটি predicate
ব্যবহার করে একটি কালেকশনের উপাদানগুলি ফিল্টার করে এবং এতে শুধুমাত্র সেই উপাদানগুলো রাখে যা শর্তে পাস করে। এটি মূল কালেকশনেই পরিবর্তন ঘটায় এবং একটি নতুন কালেকশন রিটার্ন করে না।
CollectionUtils.filter()
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Predicate;
import java.util.Arrays;
import java.util.List;
public class FilteringExample {
public static void main(String[] args) {
List<String> list = Arrays.asList("apple", "banana", "orange", "avocado");
// Define the predicate (filter out strings starting with 'a')
Predicate<String> startsWithA = new Predicate<String>() {
@Override
public boolean evaluate(String object) {
return object.startsWith("a");
}
};
// Use CollectionUtils.filter to filter the list
CollectionUtils.filter(list, startsWithA);
// Print the filtered list (modified original list)
System.out.println("Filtered List: " + list);
}
}
Filtered List: [apple, avocado]
CollectionUtils.filter()
মেথডটি সরাসরি list
এর উপাদানগুলো ফিল্টার করেছে এবং শুধুমাত্র সেই উপাদানগুলো রেখেছে যেগুলো predicate শর্তে পাস করেছে।list
পরিবর্তিত হয়েছে এবং apple
এবং avocado
রেখেছে।CollectionUtils.filter()
এবং CollectionUtils.select()
এর মধ্যে পার্থক্যFeature | CollectionUtils.select() | CollectionUtils.filter() |
---|---|---|
Return Value | Returns a new collection with the filtered elements. | Modifies the original collection in place. |
Usage | When you need a new collection with filtered elements. | When you want to modify the original collection directly. |
Thread Safety | No impact on thread safety since it returns a new collection. | Modifies the collection directly, so thread safety is important. |
Predicate হল একটি ইন্টারফেস যা একটি শর্ত নির্ধারণ করে এবং true অথবা false রিটার্ন করে। এটি একটি খুবই শক্তিশালী কৌশল যা কালেকশনের উপাদানগুলিতে শর্ত প্রয়োগ করতে ব্যবহৃত হয়। নিচে একটি উদাহরণ দেওয়া হল যেখানে Predicate
ব্যবহার করা হয়েছে:
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Predicate;
import java.util.Arrays;
import java.util.List;
public class PredicateFilteringExample {
public static void main(String[] args) {
List<String> list = Arrays.asList("apple", "banana", "avocado", "grape");
// Predicate to select strings that contain the letter 'a'
Predicate<String> containsA = new Predicate<String>() {
@Override
public boolean evaluate(String object) {
return object.contains("a");
}
};
// Use CollectionUtils.select to filter based on the predicate
List<String> filteredList = (List<String>) CollectionUtils.select(list, containsA);
// Print the filtered list
System.out.println("Filtered List: " + filteredList);
}
}
Filtered List: [apple, banana, avocado]
Predicate
ব্যবহার করা হয়েছে যেটি কেবলমাত্র সেই উপাদানগুলো নির্বাচন করে যেগুলিতে 'a' চরিত্র রয়েছে।CollectionUtils.select()
মেথডটি শুধুমাত্র সেই উপাদানগুলো ফিরিয়ে দিয়েছে।Filtering Collections বা কালেকশন ফিল্টারিং একটি শক্তিশালী টুল যা CollectionUtils.select()
এবং CollectionUtils.filter()
মেথডের মাধ্যমে সহজেই করা যায়। এই মেথডগুলো আপনাকে predicate ব্যবহার করে শর্তানুসারে কালেকশনের উপাদানগুলো ফিল্টার করতে সহায়তা করে। select()
একটি নতুন কালেকশন রিটার্ন করে, যেখানে filter()
মূল কালেকশনটিকে সরাসরি পরিবর্তন করে। আপনি যখন বড় ডেটা সেটের উপরে কার্যকরভাবে শর্ত প্রয়োগ করতে চান তখন এই ফিল্টারিং কৌশলগুলি খুবই উপকারী।
common.read_more