Apache Commons Collections লাইব্রেরির CollectionUtils একটি শক্তিশালী এবং বহুল ব্যবহৃত ক্লাস, যা Java Collections Framework এর উপর ভিত্তি করে ডাটা ম্যানিপুলেশন এবং কার্যক্রম সহজ করতে বিভিন্ন ধরনের ইউটিলিটি মেথড সরবরাহ করে। এটি কালেকশনগুলির উপর ফিল্টারিং, ট্রান্সফরমেশন, ম্যাপিং, সংযুক্তিকরণ এবং আরও অনেক ধরনের কার্যক্রম সম্পাদন করতে সহায়তা করে।
এখানে আমরা CollectionUtils এর কিছু উন্নত ব্যবহার দেখবো, যা আপনাকে কালেকশন ব্যবস্থাপনায় আরো কার্যকরী এবং উন্নত পদ্ধতি প্রদান করবে।
CollectionUtils ক্লাসে একটি শক্তিশালী select()
মেথড রয়েছে, যার মাধ্যমে আপনি কোনো কালেকশনের মধ্যে শর্তাবলী অনুসারে উপাদানগুলি ফিল্টার করতে পারেন। এটি Predicate ইন্টারফেস ব্যবহার করে কাজ করে।
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Predicate;
import java.util.Arrays;
import java.util.List;
public class CollectionUtilsFilterExample {
public static void main(String[] args) {
// List of numbers
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);
// Filter even numbers
List<Integer> evenNumbers = (List<Integer>) CollectionUtils.select(numbers, new Predicate<Integer>() {
@Override
public boolean evaluate(Integer number) {
return number % 2 == 0; // Only even numbers
}
});
// Print filtered even numbers
evenNumbers.forEach(System.out::println);
}
}
আউটপুট:
2
4
6
8
এখানে:
select()
মেথড ব্যবহার করে Predicate
দিয়ে even সংখ্যাগুলি ফিল্টার করা হয়েছে।CollectionUtils এ collect()
মেথড ব্যবহার করে আপনি একটি কালেকশনের উপাদানগুলিকে ট্রান্সফর্ম করতে পারেন, যেমন একটি নতুন ফরম্যাটে রূপান্তর করা।
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Transformer;
import java.util.Arrays;
import java.util.List;
public class CollectionUtilsTransformExample {
public static void main(String[] args) {
// List of strings
List<String> words = Arrays.asList("apple", "banana", "cherry");
// Convert all words to uppercase
List<String> upperCaseWords = (List<String>) CollectionUtils.collect(words, new Transformer<String, String>() {
@Override
public String transform(String input) {
return input.toUpperCase(); // Transform to uppercase
}
});
// Print transformed words
upperCaseWords.forEach(System.out::println);
}
}
আউটপুট:
APPLE
BANANA
CHERRY
এখানে:
collect()
মেথড ব্যবহার করে Transformer
এর মাধ্যমে প্রতিটি শব্দকে uppercase তে রূপান্তর করা হয়েছে।CollectionUtils এর sum()
, min()
, max()
মেথডগুলি আপনাকে সংগ্রহের উপাদানগুলির উপর বিভিন্ন ধরণের সংকলন অপারেশন করতে সহায়তা করে, যেমন সর্বনিম্ন, সর্বোচ্চ মান বের করা বা উপাদানগুলির যোগফল বের করা।
import org.apache.commons.collections4.CollectionUtils;
import java.util.Arrays;
import java.util.List;
public class CollectionUtilsAggregationExample {
public static void main(String[] args) {
// List of numbers
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
// Sum of numbers
int sum = CollectionUtils.sum(numbers);
System.out.println("Sum: " + sum); // Output: Sum: 15
// Max number
int max = CollectionUtils.max(numbers);
System.out.println("Max: " + max); // Output: Max: 5
// Min number
int min = CollectionUtils.min(numbers);
System.out.println("Min: " + min); // Output: Min: 1
}
}
আউটপুট:
Sum: 15
Max: 5
Min: 1
এখানে:
sum()
, max()
, এবং min()
মেথড ব্যবহার করে সংখ্যার যোগফল, সর্বোচ্চ এবং সর্বনিম্ন মান বের করা হয়েছে।CollectionUtils লাইব্রেরি আপনাকে কালেকশনের মধ্যে সমন্বয়, মিল এবং পার্থক্য বের করতে সহায়তা করে, যেমন দুটি কালেকশনের মধ্যে Union, Intersection এবং Difference।
import org.apache.commons.collections4.CollectionUtils;
import java.util.Arrays;
import java.util.List;
public class CollectionUtilsUnionExample {
public static void main(String[] args) {
// List 1
List<String> list1 = Arrays.asList("apple", "banana", "cherry");
// List 2
List<String> list2 = Arrays.asList("banana", "cherry", "date");
// Union of two lists
List<String> union = (List<String>) CollectionUtils.union(list1, list2);
System.out.println("Union: " + union); // Output: Union: [apple, banana, cherry, date]
// Intersection of two lists
List<String> intersection = (List<String>) CollectionUtils.intersection(list1, list2);
System.out.println("Intersection: " + intersection); // Output: Intersection: [banana, cherry]
// Difference of two lists
List<String> difference = (List<String>) CollectionUtils.subtract(list1, list2);
System.out.println("Difference: " + difference); // Output: Difference: [apple]
}
}
আউটপুট:
Union: [apple, banana, cherry, date]
Intersection: [banana, cherry]
Difference: [apple]
এখানে:
union()
, intersection()
, এবং subtract()
মেথড ব্যবহার করে দুটি লিস্টের মধ্যে সমন্বয়, মিল এবং পার্থক্য বের করা হয়েছে।CollectionUtils এর copy()
মেথড ব্যবহার করে আপনি একটি কালেকশনের কপি তৈরি করতে পারেন। এটি একটি নতুন কালেকশন তৈরি করে, যা মূল কালেকশনের সঠিক কপি হিসেবে কাজ করে।
import org.apache.commons.collections4.CollectionUtils;
import java.util.Arrays;
import java.util.List;
public class CollectionUtilsCopyExample {
public static void main(String[] args) {
// Original list
List<String> list1 = Arrays.asList("apple", "banana", "cherry");
// Create a copy of the list
List<String> copiedList = (List<String>) CollectionUtils.copy(list1);
// Print copied list
System.out.println("Copied List: " + copiedList);
}
}
আউটপুট:
Copied List: [apple, banana, cherry]
এখানে:
copy()
মেথড ব্যবহার করে list1 এর একটি কপি তৈরি করা হয়েছে।CollectionUtils ক্লাসটি Apache Commons Collections এর একটি শক্তিশালী অংশ, যা Java Collections Framework এর কাজগুলোকে আরও সহজ ও কার্যকরী করে তোলে। এটি বিভিন্ন ধরনের ইউটিলিটি মেথড সরবরাহ করে যা কালেকশনগুলির ফিল্টারিং, ট্রান্সফরমেশন, যোগফল, মিল, পার্থক্য, কপি তৈরি ইত্যাদি কাজ দ্রুত এবং সহজ করে। আপনি CollectionUtils এর মাধ্যমে জটিল কার্যক্রম সহজে সম্পাদন করতে পারেন এবং ডাটা স্ট্রাকচারগুলির উপর বিভিন্ন প্রক্রিয়া প্রয়োগ করতে পারবেন।
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()
মূল কালেকশনটিকে সরাসরি পরিবর্তন করে। আপনি যখন বড় ডেটা সেটের উপরে কার্যকরভাবে শর্ত প্রয়োগ করতে চান তখন এই ফিল্টারিং কৌশলগুলি খুবই উপকারী।
অ্যাপাচি কমন্স কালেকশনস (Apache Commons Collections) লাইব্রেরি এমন বিভিন্ন ইউটিলিটি ক্লাস সরবরাহ করে, যা বিভিন্ন কালেকশনের মধ্যে Intersection, Union, এবং Disjunction অপারেশন করতে সাহায্য করে। এগুলি বিশেষভাবে উপকারী যখন আপনাকে দুটি বা ততোধিক কালেকশনের মধ্যে সম্পর্কিত উপাদান খুঁজে বের করতে হয়, যেমন দুটি সেটের সম্মিলন বা পার্থক্য।
এই অপারেশনগুলির মাধ্যমে আপনি Set, List, Map বা অন্যান্য কালেকশনের মধ্যে কমন উপাদান (intersection), সম্মিলিত উপাদান (union), বা পার্থক্য (disjunction) বের করতে পারেন। অ্যাপাচি কমন্স কালেকশনসে এই ধরনের কাজের জন্য বিশেষ কিছু ইউটিলিটি ক্লাস এবং পদ্ধতি রয়েছে, যেমন CollectionUtils।
Intersection অপারেশন দুটি কালেকশনের মধ্যে সেই উপাদানগুলো বের করে যা উভয়েই উপস্থিত থাকে। এটি সাধারণত Set বা List এর মধ্যে ব্যবহৃত হয়।
import org.apache.commons.collections4.CollectionUtils;
import java.util.Arrays;
import java.util.List;
public class IntersectionExample {
public static void main(String[] args) {
// Create two lists
List<String> list1 = Arrays.asList("apple", "banana", "orange");
List<String> list2 = Arrays.asList("banana", "orange", "grape");
// Get intersection of the two lists
List<String> intersection = (List<String>) CollectionUtils.intersection(list1, list2);
// Print the intersection
System.out.println(intersection); // Output: [banana, orange]
}
}
এখানে, CollectionUtils.intersection() পদ্ধতি ব্যবহার করা হয়েছে, যা দুটি তালিকার মধ্যে সাধারণ উপাদান "banana" এবং "orange" বের করেছে।
Union অপারেশন দুটি কালেকশনের মধ্যে সমস্ত ইউনিক উপাদান সংগ্রহ করে। এটি দুটি বা তার বেশি কালেকশনের সম্মিলন তৈরি করে এবং সমস্ত উপাদান একত্রে দেয়। এটি ডুপ্লিকেট উপাদানগুলো বাদ দেয় এবং শুধুমাত্র ইউনিক উপাদান থাকে।
import org.apache.commons.collections4.CollectionUtils;
import java.util.Arrays;
import java.util.List;
public class UnionExample {
public static void main(String[] args) {
// Create two lists
List<String> list1 = Arrays.asList("apple", "banana", "orange");
List<String> list2 = Arrays.asList("banana", "orange", "grape");
// Get union of the two lists
List<String> union = (List<String>) CollectionUtils.union(list1, list2);
// Print the union
System.out.println(union); // Output: [apple, banana, orange, banana, orange, grape]
}
}
এখানে, CollectionUtils.union() পদ্ধতি দুটি তালিকার সম্মিলন তৈরি করেছে। List ব্যবহার করার কারণে ডুপ্লিকেট উপাদান "banana" এবং "orange" বাদ দেওয়া হয়নি।
Disjunction অপারেশন দুটি কালেকশনের মধ্যে যে উপাদানগুলো একটিতে রয়েছে কিন্তু অন্যটিতে নেই, সেগুলো বের করে। এটি মূলত দুটি কালেকশনের মধ্যে পার্থক্য খুঁজে বের করতে ব্যবহৃত হয়। Disjunction অপারেশনটি দুটি কালেকশনের মধ্যে একে অপরের সাথে অভিন্ন না হওয়া উপাদানগুলো সংগ্রহ করে।
import org.apache.commons.collections4.CollectionUtils;
import java.util.Arrays;
import java.util.List;
public class DisjunctionExample {
public static void main(String[] args) {
// Create two lists
List<String> list1 = Arrays.asList("apple", "banana", "orange");
List<String> list2 = Arrays.asList("banana", "orange", "grape");
// Get disjunction of the two lists
List<String> disjunction = (List<String>) CollectionUtils.disjunction(list1, list2);
// Print the disjunction
System.out.println(disjunction); // Output: [apple, grape]
}
}
এখানে, CollectionUtils.disjunction() পদ্ধতি দুটি তালিকার পার্থক্য বের করেছে। "apple" এবং "grape" তালিকায় একে অপরের মধ্যে উপস্থিত নেই, তাই এগুলি পার্থক্য হিসেবে নির্বাচন করা হয়েছে।
অপারেশন | বর্ণনা | ফলাফল |
---|---|---|
Intersection | দুটি কালেকশনের মধ্যে সাধারণ উপাদানগুলো বের করা। | [banana, orange] (যেহেতু উভয় তালিকায় এই উপাদান দুটি রয়েছে) |
Union | দুটি কালেকশনের সমস্ত ইউনিক উপাদান একত্রিত করা। | [apple, banana, orange, grape] |
Disjunction | দুটি কালেকশনের মধ্যে পার্থক্য বা ভিন্ন উপাদান বের করা। | [apple, grape] (যেহেতু এক তালিকায় এটি রয়েছে কিন্তু অন্যটিতে নেই) |
Subtraction | একটি কালেকশনের উপাদান থেকে আরেকটি কালেকশনের উপাদান মুছে ফেলা। | [apple] (list1 থেকে list2 এর উপাদান বাদ দিলে) |
Intersection, Union, এবং Disjunction অপারেশনগুলি Apache Commons Collections এর শক্তিশালী বৈশিষ্ট্য, যা বিভিন্ন কালেকশনের মধ্যে সম্পর্কিত উপাদান খুঁজে বের করার জন্য ব্যবহৃত হয়। এই অপারেশনগুলি খুবই উপকারী যখন আপনাকে বিভিন্ন ডেটা স্ট্রাকচার বা সেটের মধ্যে সাধারণ উপাদান (intersection), সম্মিলিত উপাদান (union), বা পার্থক্য (disjunction) বের করতে হয়। CollectionUtils ক্লাসের মাধ্যমে এই অপারেশনগুলো কার্যকরীভাবে এবং সহজে সম্পন্ন করা যায়।
Apache Commons Collections লাইব্রেরি Java Collections Framework এর জন্য অনেক শক্তিশালী ইউটিলিটি ক্লাস এবং ফাংশন প্রদান করে। এর মধ্যে CollectionUtils.isEqualCollection
এবং CollectionUtils.cardinalityMap
দুটি গুরুত্বপূর্ণ ফাংশন রয়েছে, যা collections এর সাথে কাজ করার সময় বেশ কার্যকরী হতে পারে।
CollectionUtils.isEqualCollection
CollectionUtils.isEqualCollection
ফাংশনটি দুটি Collection (যেমন List, Set, Bag, ইত্যাদি) এর সমানতা যাচাই করার জন্য ব্যবহৃত হয়। এই ফাংশনটি দেখে নেয় যে, দুটি কালেকশন একই উপাদান ধারণ করছে এবং প্রতিটি উপাদান একই সংখ্যায় আছে কিনা।
Set
বা List
এর ক্ষেত্রে যদি দুটি কালেকশন একে অপরের মতো উপাদান ধারণ করে তবে এটি true
রিটার্ন করবে।isEqualCollection
ব্যবহারimport org.apache.commons.collections4.CollectionUtils;
import java.util.Arrays;
import java.util.List;
public class CollectionUtilsExample {
public static void main(String[] args) {
// দুটি List তৈরি করা
List<String> list1 = Arrays.asList("apple", "banana", "cherry");
List<String> list2 = Arrays.asList("banana", "cherry", "apple");
// দুটি Collection এর সমানতা যাচাই করা
boolean isEqual = CollectionUtils.isEqualCollection(list1, list2);
System.out.println("Are the collections equal? " + isEqual); // Output: true
}
}
আউটপুট:
Are the collections equal? true
এখানে:
List
(list1
এবং list2
) একই উপাদান ধারণ করছে, তবে তাদের অর্ডার আলাদা।CollectionUtils.isEqualCollection(list1, list2)
এই দুটি Collection এর মধ্যে সমানতা যাচাই করেছে এবং এটি true
রিটার্ন করেছে কারণ উপাদানগুলো সমান।list1
এবং list2
এর মধ্যে উপাদানগুলি সমান হলেও, তাদের অর্ডার ভিন্ন হতে পারে।CollectionUtils.isEqualCollection
শুধুমাত্র উপাদান এবং তাদের সংখ্যা যাচাই করে, যাতে অর্ডার বা পুনরাবৃত্তি গণনা হয় না।CollectionUtils.cardinalityMap
cardinalityMap
একটি ইউটিলিটি মেথড যা একটি Collection থেকে cardinality মানচিত্র তৈরি করে, অর্থাৎ, এটি একটি Map তৈরি করে যেখানে প্রতিটি উপাদান এবং তার উপস্থিতির সংখ্যা সংরক্ষিত থাকে।
cardinalityMap
ব্যবহারimport org.apache.commons.collections4.CollectionUtils;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
public class CollectionUtilsExample {
public static void main(String[] args) {
// একটি List তৈরি করা
List<String> list = Arrays.asList("apple", "banana", "apple", "cherry", "banana", "banana");
// cardinalityMap তৈরি করা
Map<String, Integer> cardinalityMap = CollectionUtils.cardinalityMap(list);
// cardinalityMap প্রিন্ট করা
System.out.println("Cardinality Map: " + cardinalityMap);
}
}
আউটপুট:
Cardinality Map: {apple=2, banana=3, cherry=1}
এখানে:
cardinalityMap(list)
ফাংশনটি একটি Map তৈরি করেছে, যেখানে উপাদান এবং তাদের উপস্থিতির সংখ্যা সংরক্ষিত রয়েছে:"apple"
২ বার,"banana"
৩ বার,"cherry"
১ বার।CollectionUtils.isEqualCollection
: দুটি Collection এর সমানতা যাচাই করে, যেখানকার উপাদান এবং সংখ্যা সমান থাকে, তবে তাদের অর্ডার বা পুনরাবৃত্তি (duplicates) যাচাই করা হয় না।CollectionUtils.cardinalityMap
: একটি Collection থেকে cardinality map তৈরি করে, যেখানে প্রতিটি উপাদান এবং তার উপস্থিতির সংখ্যা সংরক্ষিত থাকে। এটি কোনো List বা Set এ উপাদানের উপস্থিতি গণনা করার জন্য ব্যবহৃত হয়।এই দুটি ফাংশন Apache Commons Collections লাইব্রেরির অন্যতম শক্তিশালী ইউটিলিটি, যা Collection সম্পর্কিত কাজগুলো সহজ, কার্যকরী এবং আরও নির্ভুল করে তোলে।
List Partitioning হলো একটি বড় তালিকাকে (list) ছোট ছোট তালিকায় বিভক্ত করার একটি কৌশল। অ্যাপাচি কমন্স কালেকশনস (Apache Commons Collections) এই কাজটি সহজে করার জন্য ListUtils.partition() মেথড সরবরাহ করে। এটি বিশেষত বড় ডেটাসেট পরিচালনা করার সময় কার্যকর, যেখানে তালিকার উপাদানগুলো ছোট ছোট ভাগে বিভক্ত করে প্রক্রিয়া করা সহজ হয়।
List Partitioning এর মাধ্যমে একটি মূল তালিকাকে নির্দিষ্ট আকারের (fixed size) ভাগে বিভক্ত করা হয়। উদাহরণস্বরূপ:
মূল তালিকা: [1, 2, 3, 4, 5, 6, 7]
প্রতিটি ভাগে সর্বাধিক ৩টি আইটেম রাখলে আউটপুট হবে: [[1, 2, 3], [4, 5, 6], [7]]
import org.apache.commons.collections4.ListUtils;
import java.util.ArrayList;
import java.util.List;
public class ListPartitionExample {
public static void main(String[] args) {
// বড় একটি তালিকা তৈরি
List<Integer> numbers = new ArrayList<>();
for (int i = 1; i <= 10; i++) {
numbers.add(i);
}
// তালিকাকে ৩-এর ভাগে ভাগ করা
List<List<Integer>> partitionedLists = ListUtils.partition(numbers, 3);
// প্রতিটি ভাগ প্রিন্ট করা
for (List<Integer> partition : partitionedLists) {
System.out.println(partition);
}
}
}
আউটপুট:
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
[10]
List Partitioning বড় ডেটাসেট প্রক্রিয়াকরণের ক্ষেত্রে অত্যন্ত কার্যকর। যেমন:
public void processInBatches(List<String> records) {
int batchSize = 100; // প্রতিটি ব্যাচে ১০০ রেকর্ড
List<List<String>> batches = ListUtils.partition(records, batchSize);
for (List<String> batch : batches) {
// প্রতিটি ব্যাচ প্রসেস করা
sendToApi(batch);
}
}
private void sendToApi(List<String> batch) {
// API-তে ব্যাচ প্রেরণ করার লজিক
System.out.println("Sending batch: " + batch);
}
তালিকাকে ভাগ করে বিভিন্ন থ্রেডে প্রক্রিয়াকরণের জন্য List Partitioning ব্যবহার করা যায়।
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ParallelProcessingExample {
public static void main(String[] args) {
List<Integer> numbers = new ArrayList<>();
for (int i = 1; i <= 100; i++) {
numbers.add(i);
}
List<List<Integer>> partitions = ListUtils.partition(numbers, 10);
ExecutorService executor = Executors.newFixedThreadPool(5);
for (List<Integer> partition : partitions) {
executor.submit(() -> {
System.out.println("Processing partition: " + partition);
});
}
executor.shutdown();
}
}
null
নয় এবং ফিক্সড সাইজ ধনাত্মক সংখ্যা।List Partitioning বড় তালিকা পরিচালনার একটি কার্যকর উপায়, যা অ্যাপাচি কমন্স কালেকশনসের ListUtils.partition() মেথড ব্যবহার করে সহজেই করা যায়। এটি ডেটাসেট পরিচালনা, প্যারালাল প্রসেসিং, এবং API কলের মতো বিভিন্ন ক্ষেত্রে প্রয়োগ করা হয়।
common.read_more