অ্যাপাচি কমন্স কালেকশনস (Apache Commons Collections) একটি শক্তিশালী লাইব্রেরি যা ডেটা স্ট্রাকচার ম্যানিপুলেশনকে সহজ এবং কার্যকরী করে তোলে। এতে Transformer এবং Closure এর মতো কাস্টম ফাংশনালিটি ব্যবহারের সুবিধা রয়েছে, যা ডেটা স্ট্রাকচারে অপারেশন করার জন্য অত্যন্ত উপকারী। Transformer ব্যবহার করে আপনি ডেটা স্ট্রাকচারের উপাদানগুলিকে রূপান্তর করতে পারেন, এবং Closure ব্যবহার করে আপনি একটি ফাংশন বা অপারেশন নির্দিষ্ট ডেটা উপাদানগুলির উপর কার্যকরী করতে পারেন।
এখানে আমরা Custom Transformer এবং Closure তৈরি করার পদ্ধতি বিস্তারিতভাবে আলোচনা করব।
Transformer একটি Function এর মতো কাজ করে, যা ইনপুট ডেটা থেকে আউটপুট ডেটা তৈরি করে। এটি সাধারণত একটি অবজেক্টের উপর একটি নির্দিষ্ট পরিবর্তন বা রূপান্তর প্রক্রিয়া কার্যকর করার জন্য ব্যবহৃত হয়।
ধরা যাক, আমাদের একটি List আছে, এবং আমরা চাই সমস্ত স্ট্রিংয়ের প্রথম অক্ষরকে বড় অক্ষরে রূপান্তর করতে।
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 convert first letter to uppercase
Transformer<String, String> transformer = new Transformer<String, String>() {
@Override
public String transform(String input) {
if (input == null || input.isEmpty()) {
return input;
}
// Capitalizing the first letter of the string
return input.substring(0, 1).toUpperCase() + input.substring(1);
}
};
// Apply the transformer to the list
List<String> transformedList = ListUtils.transformedList(list, transformer);
// Print the transformed list
System.out.println(transformedList); // Output: [Apple, Banana, Orange]
}
}
এখানে:
Closure হল একটি Runnable এর মতো কাজ করে যা নির্দিষ্ট কাজ বা অপারেশন একটি ডেটা স্ট্রাকচারের উপাদানগুলির উপর সম্পাদন করে। Closure সাধারণত একটি এক্সপ্লিসিট রিটার্ন ভ্যালু ছাড়াই একটি অপারেশন সম্পন্ন করতে ব্যবহৃত হয়।
ধরা যাক, আমাদের একটি List আছে, এবং আমরা প্রতিটি উপাদানের উপর একটি কাস্টম অপারেশন (যেমন স্ট্রিংয়ের শেষে একটি বিশেষ চিহ্ন যোগ করা) সম্পাদন করতে চাই।
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 a special character to each element
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!
}
}
এখানে:
!
চিহ্ন যোগ করবে।ধরা যাক, আমাদের একটি তালিকা রয়েছে এবং আমরা এই তালিকার সব স্ট্রিংয়ের মধ্যে "apple" শব্দটি ফিল্টার করতে চাই, এবং তারপর বাকিগুলির প্রথম অক্ষর বড় করতে চাই।
import org.apache.commons.collections4.Transformer;
import org.apache.commons.collections4.Closure;
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.collections4.CollectionUtils;
import java.util.Arrays;
import java.util.List;
public class DataFilterAndTransform {
public static void main(String[] args) {
// Create a list of strings
List<String> list = Arrays.asList("apple", "banana", "orange", "apple pie");
// Create a 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);
}
};
// Create a closure to filter out "apple" from the list
Closure<String> filterClosure = new Closure<String>() {
@Override
public void execute(String input) {
if (!input.contains("apple")) {
// Apply the transformer to the string and print it
String transformed = transformer.transform(input);
System.out.println(transformed);
}
}
};
// Apply the closure to filter and transform the list
CollectionUtils.forEach(list, filterClosure);
}
}
এখানে:
Apache Commons Collections এ Transformer এবং Closure তৈরি করার মাধ্যমে আপনি ডেটা স্ট্রাকচারগুলির উপর কাস্টম অপারেশন বা রূপান্তর কার্যকর করতে পারেন। Transformer ইনপুট ডেটাকে আউটপুট ডেটায় রূপান্তর করে, এবং Closure নির্দিষ্ট কাজ বা অপারেশন ডেটার উপাদানগুলির উপর প্রয়োগ করে। এই দুটি শক্তিশালী ইউটিলিটি ক্লাস ব্যবহার করে আপনি জাভা প্রোগ্রামিংয়ে উন্নত ডেটা ম্যানিপুলেশন অপারেশন তৈরি করতে পারেন।
common.read_more