Guava লাইব্রেরির Chainable Comparators একটি শক্তিশালী ফিচার যা বিভিন্ন Comparator কে একত্রিত (chain) করে একটি একক Comparator তৈরি করার সুযোগ দেয়। এটি বিশেষভাবে উপকারী যখন আপনাকে বিভিন্ন শর্ত অনুযায়ী কোনো অবজেক্ট বা ডেটাকে তুলনা করতে হয়। Comparator এর মাধ্যমে অবজেক্টগুলোকে সাজানো বা তুলনা করা হয়, এবং চেইনেবল Comparator ব্যবহার করে এই তুলনা গুলিকে সহজে একত্রিত করা যায়।
Chainable Comparators কি?
Guava এর Chainable Comparators আপনাকে একাধিক Comparator কে একত্রিত করে একটি কাস্টম Comparator তৈরি করার সুবিধা দেয়। এতে আপনি একাধিক তুলনা শর্তকে একটি সিকোয়েন্স হিসেবে গড়ে তুলতে পারেন, এবং এগুলিকে কেবল একটি Comparator হিসেবে ব্যবহার করতে পারেন। এর ফলে কোড সহজ এবং পড়তে সুবিধাজনক হয়।
Chainable Comparators এর সুবিধা
- কোডের পাঠযোগ্যতা উন্নয়ন:
- একাধিক
Comparatorব্যবহার করে যেকোনো অবজেক্টের তুলনা বা সাজানোর নিয়ম পরিষ্কারভাবে তৈরি করা যায়। কোড জটিলতা কমে যায়।
- একাধিক
- পুনঃব্যবহারযোগ্যতা:
- একবার চেইন করা
Comparatorগুলো পুনরায় ব্যবহার করা যায় যেকোনো জায়গায়, যা কোডের রিইউজেবিলিটি বাড়ায়।
- একবার চেইন করা
- ডাইনামিক তুলনা শর্ত:
- চেইনযোগ্য
Comparatorব্যবহার করে আপনি বিভিন্ন শর্তের উপর ভিত্তি করে ডাইনামিকভাবে তুলনা করতে পারেন।
- চেইনযোগ্য
Chainable Comparators এর ব্যবহার
এখানে Guava এর Chainable Comparators ব্যবহার করার একটি উদাহরণ দেয়া হলো:
1. Guava এর Comparators ক্লাসের মাধ্যমে চেইন করা
import com.google.common.collect.Comparators;
import java.util.*;
public class ChainableComparatorExample {
public static void main(String[] args) {
// কিছু অবজেক্ট তৈরি
List<Person> people = Arrays.asList(
new Person("Alice", 30),
new Person("Bob", 25),
new Person("Charlie", 30),
new Person("David", 35)
);
// Chainable Comparators ব্যবহার করে তুলনা শর্ত তৈরি
Comparator<Person> comparator = Comparators
.comparing(Person::getAge) // প্রথমে বয়স অনুযায়ী তুলনা
.thenComparing(Person::getName); // বয়স সমান হলে নাম অনুযায়ী তুলনা
// তালিকা সাজানো
people.sort(comparator);
// সাজানো ফলাফল প্রদর্শন
people.forEach(person -> System.out.println(person.getName() + " - " + person.getAge()));
}
}
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;
}
}
2. ব্যাখ্যা:
- প্রথমে
Comparators.comparing(Person::getAge)ব্যবহার করে প্রথমে বয়স অনুযায়ী তুলনা করা হয়েছে। - তারপরে
thenComparing(Person::getName)ব্যবহার করে বয়স যদি সমান হয়, তাহলে নামের ভিত্তিতে তুলনা করা হয়েছে। List.sort(comparator)মেথডের মাধ্যমে এই চেইন করাComparatorব্যবহার করে তালিকা সাজানো হয়েছে।
3. আউটপুট:
Bob - 25
Alice - 30
Charlie - 30
David - 35
এই উদাহরণে, Comparator গুলি প্রথমে বয়সের উপর, এবং বয়স সমান হলে নামের উপর তুলনা করছে।
Guava Chainable Comparators এর অন্যান্য ফিচার
thenComparing()মেথড:- এটি ব্যবহার করে আপনি একাধিক তুলনা শর্ত চেইন করতে পারেন। যদি প্রথম শর্ত মেটানো না হয়, তবে পরবর্তী শর্তটি পরীক্ষা করা হবে।
reversed()মেথড:- যদি আপনাকে কম্প্যারেটরটির পরিসংখ্যানের উল্টো পরিসংখ্যান চাই, তবে আপনি
reversed()মেথড ব্যবহার করতে পারেন। এটিComparatorএর রিভার্সড সংস্করণ প্রদান করে।
Comparator<Person> reversedComparator = comparator.reversed();- যদি আপনাকে কম্প্যারেটরটির পরিসংখ্যানের উল্টো পরিসংখ্যান চাই, তবে আপনি
nullsFirst()এবংnullsLast()মেথড:- যদি আপনার ডেটা কোনো
nullভ্যালু ধারণ করে, তাহলেnullsFirst()বাnullsLast()মেথড ব্যবহার করে আপনিnullভ্যালুদের প্রথম বা শেষ স্থানে রাখার সুবিধা পাবেন।
Comparator<Person> nullSafeComparator = Comparators.nullsFirst(comparator);- যদি আপনার ডেটা কোনো
Guava এর Chainable Comparators একটি শক্তিশালী টুল যা Java-তে বিভিন্ন তুলনা শর্ত একত্রিত করতে সহায়তা করে। এটি কোডকে আরও সহজ, পরিষ্কার এবং পুনঃব্যবহারযোগ্য করে তোলে, যা বড় প্রকল্পে কাজ করার সময় বিশেষভাবে উপকারী। Comparators ব্যবহার করে আপনি একাধিক তুলনা শর্ত চেইন করে খুব সহজেই ডেটা সাজাতে পারেন এবং কোডের জটিলতা কমাতে পারেন।
Read more