Apache Commons Collections লাইব্রেরি ডেভেলপারদের জন্য Custom Collections এবং Advanced Functors তৈরির জন্য শক্তিশালী উপকরণ সরবরাহ করে। Custom Collections এর মাধ্যমে আপনি নিজের প্রোজেক্টের জন্য কাস্টম ডাটা স্ট্রাকচার তৈরি করতে পারেন, এবং Advanced Functors ব্যবহার করে আপনি আরও উন্নত কার্যপ্রণালী এবং ফাংশনালিটি প্রয়োগ করতে পারেন, যেমন শর্তাবলী অনুযায়ী ট্রান্সফর্মেশন বা মান যাচাই করা।
এখানে, আমরা Custom Collections তৈরি এবং Advanced Functors ব্যবহারের উদাহরণ দেখবো, যা আপনার কালেকশন ব্যবস্থাপনা ও ডাটা ম্যানিপুলেশনকে আরও শক্তিশালী করবে।
Custom Collections হল এমন কালেকশন ডাটা স্ট্রাকচার যা আপনার প্রোজেক্টের বিশেষ প্রয়োজনের জন্য কাস্টমাইজ করা হয়। Apache Commons Collections লাইব্রেরি আপনাকে নতুন কালেকশন ইন্টারফেস বা ক্লাস তৈরি করার জন্য ইউটিলিটি প্রদান করে, যাতে আপনি নির্দিষ্ট ফিচার বা কার্যপ্রণালী প্রয়োগ করতে পারেন।
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.collection.AbstractCollection;
import java.util.Iterator;
public class CustomCollectionExample {
public static void main(String[] args) {
// Create custom collection
CustomCollection<Integer> customCollection = new CustomCollection<>();
customCollection.add(10);
customCollection.add(20);
customCollection.add(30);
// Print the custom collection
customCollection.forEach(System.out::println); // Output: 10, 20, 30
}
// Custom collection class extending AbstractCollection
static class CustomCollection<T> extends AbstractCollection<T> {
private final java.util.Collection<T> collection;
public CustomCollection() {
collection = new java.util.ArrayList<>();
}
@Override
public Iterator<T> iterator() {
return collection.iterator();
}
@Override
public int size() {
return collection.size();
}
@Override
public boolean add(T t) {
return collection.add(t);
}
@Override
public boolean remove(Object o) {
return collection.remove(o);
}
}
}
এখানে:
iterator()
, size()
, এবং add()
মেথডগুলো কাস্টমাইজ করা হয়েছে যাতে এই কালেকশনটি ArrayList
এর মতো আচরণ করে।Advanced Functors এ Functor এর বিভিন্ন ধরণের উন্নত ব্যবহার করা হয়, যেখানে আপনি একটি কাস্টম ট্রান্সফরমেশন বা শর্তাবলী অনুসারে কার্যপ্রণালী প্রয়োগ করতে পারেন।
Transformer হলো একটি Functor যা একটি ইনপুট মান গ্রহণ করে এবং তাকে একটি আউটপুট মানে রূপান্তরিত করে। আপনি Transformer এর মাধ্যমে যেকোনো ডাটা ট্রান্সফরমেশন প্রক্রিয়া সম্পাদন করতে পারেন।
import org.apache.commons.collections4.Transformer;
import org.apache.commons.collections4.functors.TransformerUtils;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class AdvancedTransformerExample {
public static void main(String[] args) {
// List of numbers
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
// Creating a transformer to square the number
Transformer<Integer, Integer> squareTransformer = TransformerUtils.invokerTransformer("square");
// Apply transformer to the list
List<Integer> squaredNumbers = numbers.stream()
.map(squareTransformer::transform)
.collect(Collectors.toList());
System.out.println(squaredNumbers); // Output: [1, 4, 9, 16, 25]
}
// Utility method to square a number
public static int square(int number) {
return number * number;
}
}
এখানে:
TransformerUtils.invokerTransformer("square")
ব্যবহার করে একটি Transformer তৈরি করা হয়েছে যা একটি ফাংশন (এখানে square()) কল করে এবং সেই ফাংশনটির মাধ্যমে ডাটা ট্রান্সফর্মেশন সম্পাদন করে।map()
ফাংশনের মাধ্যমে আমরা সমস্ত সংখ্যাকে square করে এক নতুন লিস্ট তৈরি করেছি।Predicate হল একটি ফাংশনাল ইন্টারফেস যা একটি শর্ত প্রমাণ করতে ব্যবহৃত হয়। এটি সাধারণত filtering এবং searching অপারেশনগুলিতে ব্যবহৃত হয়। আপনি Predicate এর মাধ্যমে বিভিন্ন শর্ত সংযুক্ত করতে পারেন, যেমন and()
, or()
, বা not()
মেথড ব্যবহার করে।
import org.apache.commons.collections4.Predicate;
import org.apache.commons.collections4.CollectionUtils;
import java.util.Arrays;
import java.util.List;
public class AdvancedPredicateExample {
public static void main(String[] args) {
// List of fruits
List<String> fruits = Arrays.asList("apple", "banana", "cherry", "blueberry");
// Predicate to check if the string starts with 'b'
Predicate<String> startsWithB = fruit -> fruit.startsWith("b");
// Predicate to check if the string has more than 5 characters
Predicate<String> moreThanFiveChars = fruit -> fruit.length() > 5;
// Combine the predicates using 'and' (both conditions must be true)
Predicate<String> combinedPredicate = startsWithB.and(moreThanFiveChars);
// Filter list using combined predicate
List<String> filteredFruits = (List<String>) CollectionUtils.select(fruits, combinedPredicate);
System.out.println(filteredFruits); // Output: [banana, blueberry]
}
}
এখানে:
Criteria | Functor | Predicate |
---|---|---|
Purpose | Performs a transformation on data | Evaluates a condition (returns boolean) |
Return Type | Transforms data into another form | Returns a boolean (true/false) |
Use Case | Used for transforming data (e.g., changing format) | Used for filtering or testing conditions |
Common Methods | transform() | evaluate() |
Feature | Custom Collections | Advanced Functors |
---|---|---|
Customization | You can create custom data structures based on specific needs. | Apply transformations and conditions on collections. |
Performance | Optimized for specific use cases. | Enhance collection manipulation with functional programming. |
Flexibility | Supports dynamic and flexible data structure creation. | Supports complex filtering, transformation, and condition evaluation. |
Use Cases | Custom collections for special requirements. | Functors for data transformation and predicates for filtering. |
Apache Commons Collections লাইব্রেরি আপনাকে Custom Collections এবং Advanced Functors তৈরি করতে সহায়তা করে, যা আপনার কোডে আরও নমনীয়তা এবং কার্যকারিতা যোগ করে। Custom Collections এর মাধ্যমে আপনি আপনার প্রোজেক্টের জন্য কাস্টম ডাটা স্ট্রাকচার তৈরি করতে পারেন, যা আপনার নির্দিষ্ট প্রয়োজন পূরণ করে। অপরদিকে, Advanced Functors (যেমন Transformer এবং Predicate) ব্যবহারের মাধ্যমে আপনি ডাটা ট্রান্সফরমেশন, শর্তাবলী যাচাই, এবং ফিল্টারিং অপারেশনগুলো আরো সহজভাবে এবং কার্যকরীভাবে করতে পারেন।
Apache Commons Collections লাইব্রেরি বিভিন্ন ধরনের কাস্টম কালেকশন ডেটা স্ট্রাকচার তৈরি এবং ব্যবহারের জন্য ইউটিলিটি সরবরাহ করে। তবে কখনও কখনও আপনার প্রকল্পের নির্দিষ্ট প্রয়োজনীয়তার জন্য একটি Custom Collection তৈরি করার প্রয়োজন হতে পারে। Custom Collection তৈরি করার মাধ্যমে আপনি নতুন কালেকশন শ্রেণী তৈরি করতে পারেন যা বিশেষ ধরনের আচরণ বা প্রক্রিয়া অনুসরণ করবে।
এখানে আমরা Apache Commons Collections লাইব্রেরি ব্যবহার করে একটি Custom Collection তৈরি করার পদক্ষেপ দেখাবো। আমরা একটি কাস্টম List তৈরি করবো, যেটি কিছু অতিরিক্ত কার্যকারিতা যোগ করবে এবং সহজেই Java Collections Framework (JCF) এর সাথে কাজ করবে।
java.util.Collection
বা java.util.List
এর মতো একাধিক ইন্টারফেস বাস্তবায়ন (implement) করতে হবে, যার মাধ্যমে আপনার কাস্টম কালেকশন ক্লাসটি কাজ করবে।add()
, remove()
, size()
, clear()
ইত্যাদি মেথড লিখতে পারেন।Collection
ইন্টারফেসের সাথে মেলে এমন কিছু কাস্টম লজিক বা ফিল্টারিং, প্রক্রিয়া অ্যাপ্লাই করতে পারেন।আমরা একটি কাস্টম List তৈরি করব যা একটি element (অবজেক্ট) যোগ করার সময় কাস্টম শর্ত প্রয়োগ করবে এবং একই উপাদানটি duplicate হলে তাকে ইনসার্ট করবে না।
import java.util.ArrayList;
import java.util.Collection;
public class CustomList<E> implements Collection<E> {
private final ArrayList<E> list = new ArrayList<>();
@Override
public boolean add(E e) {
// Custom condition: don't allow duplicate elements
if (list.contains(e)) {
System.out.println(e + " already exists in the collection, not adding.");
return false;
}
return list.add(e);
}
@Override
public int size() {
return list.size();
}
@Override
public boolean isEmpty() {
return list.isEmpty();
}
@Override
public boolean contains(Object o) {
return list.contains(o);
}
@Override
public java.util.Iterator<E> iterator() {
return list.iterator();
}
@Override
public Object[] toArray() {
return list.toArray();
}
@Override
public <T> T[] toArray(T[] a) {
return list.toArray(a);
}
@Override
public boolean remove(Object o) {
return list.remove(o);
}
@Override
public boolean containsAll(Collection<?> c) {
return list.containsAll(c);
}
@Override
public boolean addAll(Collection<? extends E> c) {
return list.addAll(c);
}
@Override
public boolean removeAll(Collection<?> c) {
return list.removeAll(c);
}
@Override
public boolean retainAll(Collection<?> c) {
return list.retainAll(c);
}
@Override
public void clear() {
list.clear();
}
// Additional custom method for printing elements
public void printElements() {
System.out.println("Custom List Elements: " + list);
}
}
CustomList
একটি কাস্টম Collection ক্লাস যা Collection
ইন্টারফেস বাস্তবায়ন করেছে এবং এর মধ্যে একটি ArrayList
ব্যবহার করেছে।add()
মেথডে একটি কাস্টম শর্ত যোগ করা হয়েছে, যাতে এটি একই উপাদানকে duplicate না করার নিশ্চয়তা দেয়।printElements()
একটি অতিরিক্ত কাস্টম মেথড যা কালেকশনের উপাদানগুলো কনসোলে প্রিন্ট করবে।এখন, আমাদের কাস্টম CustomList
ক্লাসটি ব্যবহার করার জন্য একটি প্রধান ক্লাস তৈরি করি।
public class CustomCollectionTest {
public static void main(String[] args) {
// Create a CustomList
CustomList<String> customList = new CustomList<>();
// Add elements to the CustomList
customList.add("apple");
customList.add("banana");
customList.add("orange");
customList.add("apple"); // This will not be added as it's a duplicate
// Print elements in the list
customList.printElements(); // Output: Custom List Elements: [apple, banana, orange]
// Checking size
System.out.println("Size of Custom List: " + customList.size()); // Output: 3
}
}
apple already exists in the collection, not adding.
Custom List Elements: [apple, banana, orange]
Size of Custom List: 3
apple
যোগ করার পর দ্বিতীয়বার apple
যোগ করতে গেলে এটি কাস্টম শর্তের কারণে যুক্ত হয়নি (duplicate শর্তের জন্য)।printElements()
মেথডটি ব্যবহার করে কালেকশনের উপাদানগুলো প্রিন্ট করা হয়েছে।আপনি Apache Commons Collections লাইব্রেরি ব্যবহার করে সহজেই Custom Collections তৈরি করতে পারেন। Custom List, Custom Map বা অন্যান্য Collection তৈরির মাধ্যমে আপনি বিশেষ ধরনের আচরণ বা শর্ত প্রয়োগ করতে পারেন যা স্ট্যান্ডার্ড JCF এ সম্ভব নয়। এটি আপনাকে আপনার প্রোজেক্টে নির্দিষ্ট প্রয়োজনীয়তা অনুযায়ী কালেকশন ডেটা স্ট্রাকচার কাস্টমাইজ করার ক্ষমতা প্রদান করে।
Apache Commons Collections লাইব্রেরি জাভাতে ফাংশনাল প্রোগ্রামিং প্যাটার্নের ব্যবহারকে সহজ করে তোলে, যেমন Predicate, Transformer, এবং Closure। এই ক্লাসগুলি বিভিন্ন ধরনের ফিল্টারিং, রূপান্তর এবং অপারেশন করার জন্য ব্যবহৃত হয়। আপনি কাস্টম Predicate, Transformer এবং Closure তৈরি করতে পারেন আপনার নির্দিষ্ট প্রয়োজনে। নিচে আমরা কিভাবে এই ক্লাসগুলিকে কাস্টমাইজ করা যায়, তা আলোচনা করব।
Predicate হল একটি boolean-valued function যা কোনও অবজেক্ট ইনপুট হিসেবে নেয় এবং একটি true বা false আউটপুট প্রদান করে। এটি সাধারণত filtering কাজের জন্য ব্যবহৃত হয়, যেমন কোন একটি কালেকশনের উপাদান ফিল্টার করা।
ধরা যাক, আমাদের একটি তালিকা আছে এবং আমরা চাই শুধুমাত্র ৫ অক্ষরের বেশি লম্বা স্ট্রিংগুলো বের করতে।
import org.apache.commons.collections4.Predicate;
import org.apache.commons.collections4.CollectionUtils;
import java.util.Arrays;
import java.util.List;
public class CustomPredicateExample {
public static void main(String[] args) {
// Create a list of strings
List<String> list = Arrays.asList("apple", "banana", "orange", "kiwi", "grape");
// Create a custom Predicate to filter strings greater than 5 characters
Predicate<String> lengthPredicate = new Predicate<String>() {
@Override
public boolean evaluate(String input) {
return input.length() > 5; // Filter strings with more than 5 characters
}
};
// Apply the Predicate to filter the list
List<String> filteredList = (List<String>) CollectionUtils.select(list, lengthPredicate);
// Print the filtered list
System.out.println(filteredList); // Output: [banana, orange]
}
}
এখানে, আমরা একটি Predicate তৈরি করেছি যা String এর দৈর্ঘ্য পরীক্ষা করে এবং যেগুলি ৫ অক্ষরের বেশি, সেগুলো ফিল্টার করা হয়েছে।
Transformer হল একটি ফাংশনাল অপারেশন যা একটি অবজেক্ট ইনপুট হিসেবে নেয় এবং অন্য একটি আউটপুট অবজেক্ট প্রদান করে। এটি মূলত ডেটা ট্রান্সফরমেশন বা রূপান্তর করতে ব্যবহৃত হয়।
ধরা যাক, আমাদের একটি তালিকা আছে এবং আমরা চাই স্ট্রিংগুলির প্রত্যেকটি প্রথম অক্ষরকে বড় অক্ষরে রূপান্তর করতে।
import org.apache.commons.collections4.Transformer;
import org.apache.commons.collections4.ListUtils;
import java.util.Arrays;
import java.util.List;
public class CustomTransformerExample {
public static void main(String[] args) {
// Create a list of strings
List<String> list = Arrays.asList("apple", "banana", "orange");
// Create a custom Transformer to capitalize the first letter of each string
Transformer<String, String> transformer = new Transformer<String, String>() {
@Override
public String transform(String input) {
if (input == null || input.isEmpty()) {
return input;
}
return input.substring(0, 1).toUpperCase() + input.substring(1);
}
};
// Apply the transformer to the list
List<String> transformedList = (List<String>) ListUtils.transformedList(list, transformer);
// Print the transformed list
System.out.println(transformedList); // Output: [Apple, Banana, Orange]
}
}
এখানে, আমরা একটি Transformer তৈরি করেছি যা স্ট্রিংয়ের প্রথম অক্ষর বড় করে রূপান্তর করে এবং তা একটি তালিকার উপাদানগুলিতে প্রয়োগ করেছি।
Closure হল একটি ফাংশনাল অপারেশন যা একটি অবজেক্ট ইনপুট হিসেবে নেয় এবং কিছু কার্যকরী কাজ সম্পাদন করে, কিন্তু এটি কোন আউটপুট প্রদান করে না। এটি সাধারণত কোনো অপারেশন বা এক্সিকিউটেবল কাজ করার জন্য ব্যবহৃত হয়, যেমন একটি ডেটা কালেকশনের উপর কাজ করা।
ধরা যাক, আমাদের একটি তালিকা রয়েছে এবং আমরা চাই যে, প্রতিটি স্ট্রিংয়ের শেষে একটি বিশেষ চিহ্ন যোগ করা হোক।
import org.apache.commons.collections4.Closure;
import org.apache.commons.collections4.CollectionUtils;
import java.util.Arrays;
import java.util.List;
public class CustomClosureExample {
public static void main(String[] args) {
// Create a list of strings
List<String> list = Arrays.asList("apple", "banana", "orange");
// Create a custom Closure to append an exclamation mark to each string
Closure<String> closure = new Closure<String>() {
@Override
public void execute(String input) {
// Append a special character to each string
System.out.println(input + "!");
}
};
// Apply the closure to the list
CollectionUtils.forEach(list, closure); // Output: apple! banana! orange!
}
}
এখানে, আমরা একটি Closure তৈরি করেছি যা প্রতিটি স্ট্রিংয়ের শেষে !
চিহ্ন যোগ করে এবং forEach পদ্ধতি দিয়ে সেটি তালিকার প্রতিটি উপাদানে প্রয়োগ করা হয়েছে।
ফিচার | Predicate | Transformer | Closure |
---|---|---|---|
কাজ | একটি অবজেক্টের উপর পরীক্ষণ চালিয়ে boolean রিটার্ন করা | একটি অবজেক্ট রূপান্তর করে নতুন আউটপুট তৈরি করা | একটি অবজেক্টের উপর কার্যকরী কাজ করা, কোন আউটপুট নেই |
রিটার্ন টাইপ | boolean | Any (যেকোনো ধরনের অবজেক্ট) | void (কোনো রিটার্ন নেই) |
ব্যবহার | ফিল্টারিং বা টেস্টিং | ডেটা ট্রান্সফরমেশন বা রূপান্তর | অপারেশন সম্পাদন বা প্রক্রিয়া |
কোড উদাহরণ | boolean evaluate(T input) | R transform(T input) | void execute(T input) |
Apache Commons Collections লাইব্রেরি ব্যবহার করে আপনি Predicate, Transformer, এবং Closure ক্লাসগুলো কাস্টমাইজ করে বিশেষ ধরনের ফাংশনাল অপারেশন তৈরি করতে পারেন। Predicate ব্যবহার করে আপনি ডেটার উপর পরীক্ষা চালিয়ে ফলাফল ফিল্টার করতে পারেন, Transformer ব্যবহার করে আপনি ডেটা রূপান্তর করতে পারেন, এবং Closure ব্যবহার করে আপনি কোনো কার্যকরী অপারেশন সম্পাদন করতে পারেন। এই ক্লাসগুলিকে কাস্টমাইজ করার মাধ্যমে আপনি আরও কার্যকরী, পুনঃব্যবহারযোগ্য কোড তৈরি করতে পারবেন যা আপনার প্রোজেক্টের ডেটা ম্যানিপুলেশনকে আরও সহজ এবং কার্যকর করবে।
Apache Commons Collections লাইব্রেরি Java এর স্ট্যান্ডার্ড Collections Framework এর উপর বেশ কিছু উন্নত এবং শক্তিশালী complex operations পরিচালনা করার ক্ষমতা প্রদান করে। এটি বিভিন্ন ধরনের Collections (যেমন List, Set, Map, Bag) এর সাথে জটিল কাজগুলো সহজভাবে পরিচালনা করার জন্য ইউটিলিটি ক্লাস এবং মেথড সরবরাহ করে।
এখানে আমরা আলোচনা করব কিছু গুরুত্বপূর্ণ complex operations যা আপনি Apache Commons Collections লাইব্রেরি ব্যবহার করে Collections এর উপর করতে পারেন।
CollectionUtils হল Apache Commons Collections লাইব্রেরির একটি ক্লাস যা অনেক ইউটিলিটি ফাংশন সরবরাহ করে। এটি আপনাকে collections এর উপর বিভিন্ন ধরনের complex operations সহজভাবে করার সুযোগ দেয়।
addAll() মেথডটি ব্যবহার করে আপনি একাধিক উপাদান একটি কালেকশনে একযোগে যোগ করতে পারেন। এটি List, Set, বা অন্য কোন Collection এর জন্য ব্যবহৃত হতে পারে।
import org.apache.commons.collections4.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
public class ComplexOperationsExample {
public static void main(String[] args) {
List<String> list1 = new ArrayList<>();
list1.add("apple");
list1.add("banana");
List<String> list2 = new ArrayList<>();
list2.add("cherry");
list2.add("date");
// list2 এর সব উপাদান list1 তে যোগ করা
CollectionUtils.addAll(list1, "cherry", "date");
// নতুন list1 প্রিন্ট করা
System.out.println("Updated List: " + list1);
}
}
আউটপুট:
Updated List: [apple, banana, cherry, date]
এখানে:
এটি একটি Collection থেকে একাধিক উপাদান মুছে ফেলতে ব্যবহৃত হয়।
import org.apache.commons.collections4.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
public class ComplexOperationsExample {
public static void main(String[] args) {
List<String> list1 = new ArrayList<>();
list1.add("apple");
list1.add("banana");
list1.add("cherry");
List<String> list2 = new ArrayList<>();
list2.add("banana");
list2.add("cherry");
// list1 থেকে list2 এর উপাদান মুছে ফেলা
CollectionUtils.removeAll(list1, list2);
// নতুন list1 প্রিন্ট করা
System.out.println("Updated List: " + list1);
}
}
আউটপুট:
Updated List: [apple]
এখানে:
intersection() ফাংশনটি দুটি কালেকশনের মিল খুঁজে বের করে। এটি দুইটি কালেকশনের মধ্যে যে উপাদানগুলো সাধারণভাবে রয়েছে সেগুলো রিটার্ন করে।
import org.apache.commons.collections4.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
public class ComplexOperationsExample {
public static void main(String[] args) {
List<String> list1 = new ArrayList<>();
list1.add("apple");
list1.add("banana");
list1.add("cherry");
List<String> list2 = new ArrayList<>();
list2.add("banana");
list2.add("date");
// দুটি list এর মিল খোঁজা
List<String> intersection = (List<String>) CollectionUtils.intersection(list1, list2);
// মিলিত উপাদানগুলি প্রিন্ট করা
System.out.println("Intersection: " + intersection);
}
}
আউটপুট:
Intersection: [banana]
এখানে:
"banana"
।subtract() মেথডটি একটি Collection থেকে আরেকটি Collection এর উপাদান সরিয়ে দেয়।
import org.apache.commons.collections4.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
public class ComplexOperationsExample {
public static void main(String[] args) {
List<String> list1 = new ArrayList<>();
list1.add("apple");
list1.add("banana");
list1.add("cherry");
List<String> list2 = new ArrayList<>();
list2.add("banana");
// list1 থেকে list2 এর উপাদান সরানো
CollectionUtils.subtract(list1, list2);
// নতুন list1 প্রিন্ট করা
System.out.println("Updated List: " + list1);
}
}
আউটপুট:
Updated List: [apple, cherry]
এখানে:
"banana"
সরিয়ে ফেলেছে।MapUtils ব্যবহার করে Map-এর উপর কিছু জটিল অপারেশন করা যায়, যেমন merge, get ইত্যাদি।
import org.apache.commons.collections4.MapUtils;
import java.util.HashMap;
import java.util.Map;
public class ComplexOperationsExample {
public static void main(String[] args) {
// একটি Map তৈরি করা
Map<String, String> map = new HashMap<>();
map.put("key1", "value1");
map.put("key2", "value2");
// Map থেকে মান বের করা
String value = MapUtils.getString(map, "key1");
// মান প্রিন্ট করা
System.out.println("Value for key1: " + value);
}
}
আউটপুট:
Value for key1: value1
import org.apache.commons.collections4.MapUtils;
import java.util.HashMap;
import java.util.Map;
public class ComplexOperationsExample {
public static void main(String[] args) {
// একটি Map তৈরি করা
Map<String, String> map = new HashMap<>();
map.put("key1", "value1");
// Map এ নতুন মান যোগ বা পুরানো মান আপডেট করা
MapUtils.merge(map, "key2", "value2");
// নতুন Map প্রিন্ট করা
System.out.println("Updated Map: " + map);
}
}
আউটপুট:
Updated Map: {key1=value1, key2=value2}
BagUtils দিয়ে আপনি Bag এর উপাদানগুলো পরিচালনা করতে পারেন।
import org.apache.commons.collections4.Bag;
import org.apache.commons.collections4.bag.HashBag;
public class ComplexOperationsExample {
public static void main(String[] args) {
// একটি Bag তৈরি করা
Bag<String> bag = new HashBag<>();
bag.add("apple");
bag.add("banana");
bag.add("apple");
// "apple" উপাদানের সংখ্যা বের করা
int count = bag.getCount("apple");
// ফলস্বরূপ সংখ্যা প্রিন্ট করা
System.out.println("Count of apple: " + count);
}
}
আউটপুট:
Count of apple: 2
এখানে:
"apple"
উপাদানটির উপস্থিতি ২ বার ট্র্যাক করা হয়েছে।Apache Commons Collections এর এই ধরনের ইউটিলিটি ফাংশনগুলি আপনাকে আপনার প্রোগ্রামের data manipulation আরও সহজ এবং কার্যকরী করতে সাহায্য করবে।
common.read_more