Apache Commons Collections লাইব্রেরি Transformer ইন্টারফেস সরবরাহ করে যা একটি functional transformation প্রদান করে। এটি একটি জেনেরিক ইন্টারফেস যা একটি ইনপুট ভ্যালু নিয়ে তার উপর একটি নির্দিষ্ট রূপান্তর প্রক্রিয়া প্রয়োগ করে এবং একটি আউটপুট ভ্যালু ফেরত দেয়। এই ইন্টারফেসটি সাধারণত map, filter, অথবা transform অপারেশনগুলোতে ব্যবহৃত হয়।
Transformer ইন্টারফেস মূলত input ভ্যালুর উপর transformation প্রক্রিয়া প্রয়োগ করে একটি নতুন output তৈরি করে। এটি functional programming ধারণার মতো কাজ করে যেখানে একটি অবজেক্ট বা ভ্যালুর উপর নির্দিষ্ট ফাংশন প্রয়োগ করা হয়।
Transformer একটি সাধারণ functional interface যা ইনপুট ভ্যালু নিয়ে একটি আউটপুট ভ্যালু তৈরি করার জন্য একটি transform() মেথড ডিফাইন করে। এটি ইনপুটের ধরণ ও আউটপুটের ধরণ একই হতে পারে বা ভিন্নও হতে পারে।
public interface Transformer<I, O> {
O transform(I input);
}
এখানে:
Transformer ইন্টারফেসটি সাধারণত map, filter বা transform অপারেশনগুলোতে ব্যবহার করা হয়, যেখানে ডেটা স্ট্রাকচারের উপাদানগুলো পরিবর্তন বা রূপান্তর করা হয়। এটি মূলত Java Collections বা Streams API এর মতো কনটেইনার থেকে ডেটা ট্রান্সফর্মেশন করার জন্য ব্যবহার করা যায়।
ধরা যাক, আমরা একটি String তালিকা থেকে প্রতিটি স্ট্রিংকে বড় হাতের অক্ষরে রূপান্তর করতে চাই। এর জন্য আমরা Transformer ইন্টারফেস ব্যবহার করতে পারি।
import org.apache.commons.collections4.Transformer;
import org.apache.commons.collections4.CollectionUtils;
import java.util.Arrays;
import java.util.List;
public class TransformerExample {
public static void main(String[] args) {
List<String> words = Arrays.asList("apple", "banana", "cherry");
// Create a transformer that converts string to uppercase
Transformer<String, String> transformer = new Transformer<String, String>() {
@Override
public String transform(String input) {
return input.toUpperCase();
}
};
// Use CollectionUtils to transform the list using the transformer
List<String> transformedWords = (List<String>) CollectionUtils.collect(words, transformer);
// Print the transformed list
System.out.println(transformedWords); // Output: [APPLE, BANANA, CHERRY]
}
}
এখানে:
আউটপুট:
[APPLE, BANANA, CHERRY]
আপনি Transformer ইন্টারফেস ব্যবহার করে জটিল অবজেক্টগুলির উপরও রূপান্তর প্রয়োগ করতে পারেন। যেমন, আপনি একটি Person অবজেক্টের age ফিল্ড পরিবর্তন করতে চাইছেন।
import org.apache.commons.collections4.Transformer;
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return "Person{name='" + name + "', age=" + age + "}";
}
}
public class TransformerObjectExample {
public static void main(String[] args) {
Person person = new Person("John", 25);
// Create a transformer that increases the age by 5 years
Transformer<Person, Person> transformer = new Transformer<Person, Person>() {
@Override
public Person transform(Person input) {
return new Person(input.getName(), input.getAge() + 5);
}
};
// Apply the transformer to the person object
Person transformedPerson = transformer.transform(person);
// Print the transformed person
System.out.println(transformedPerson); // Output: Person{name='John', age=30}
}
}
এখানে:
আউটপুট:
Person{name='John', age=30}
CollectionUtils.collect(): এটি একটি নির্দিষ্ট Transformer ব্যবহার করে একটি Collection এর উপাদানগুলোকে রূপান্তর করতে সাহায্য করে। এটি খুবই উপকারী যখন আপনাকে একটি লিস্ট বা সেটের উপর একই ধরনের রূপান্তর প্রক্রিয়া প্রয়োগ করতে হয়।
উদাহরণ:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4);
Transformer<Integer, Integer> squareTransformer = number -> number * number;
List<Integer> squaredNumbers = (List<Integer>) CollectionUtils.collect(numbers, squareTransformer);
System.out.println(squaredNumbers); // Output: [1, 4, 9, 16]
Transformer ইন্টারফেস Apache Commons Collections লাইব্রেরির একটি গুরুত্বপূর্ণ অংশ, যা functional transformation এর মাধ্যমে ডেটার রূপান্তর করার সুবিধা দেয়। এটি সাধারণত map অথবা transform অপারেশনগুলোতে ব্যবহৃত হয়, যেখানে ডেটা সংগ্রহের উপাদানগুলোকে পরিবর্তন করা হয়। Transformer এর মাধ্যমে আপনি যে কোনো অবজেক্ট বা ডেটা স্ট্রাকচারে নির্দিষ্ট রূপান্তর প্রক্রিয়া প্রয়োগ করতে পারেন, যেমন স্ট্রিংকে ক্যাপিটালাইজ করা, বয়স পরিবর্তন করা, অথবা সংখ্যা স্কয়ার করা। এটি সহজ, কার্যকরী এবং পুনরায় ব্যবহারযোগ্য কোড লেখার সুযোগ দেয়।
common.read_more