ComparatorUtils হলো অ্যাপাচি কমন্স কালেকশনস লাইব্রেরির একটি ইউটিলিটি ক্লাস, যা Comparator (তুলনাকারী)-এর বিভিন্ন কার্যকর অপারেশন সরবরাহ করে। এটি জাভার বিল্ট-ইন Comparator-এর সীমাবদ্ধতা কাটিয়ে তুলনামূলকভাবে উন্নত ফিচার প্রদান করে।
import org.apache.commons.collections4.ComparatorUtils;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class NaturalOrderExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(5, 2, 8, 1, 9);
// প্রাকৃতিক ক্রম
Collections.sort(numbers, ComparatorUtils.naturalComparator());
System.out.println("Natural Order: " + numbers);
// উল্টো ক্রম
Collections.sort(numbers, ComparatorUtils.reversedComparator(ComparatorUtils.naturalComparator()));
System.out.println("Reverse Order: " + numbers);
}
}
Natural Order: [1, 2, 5, 8, 9]
Reverse Order: [9, 8, 5, 2, 1]
Chain Comparator ব্যবহার করে একাধিক শর্তের ভিত্তিতে ডেটা সাজানো যায়।
import org.apache.commons.collections4.ComparatorUtils;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
class Employee {
String name;
int age;
public Employee(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return name + " (" + age + ")";
}
}
public class ChainComparatorExample {
public static void main(String[] args) {
List<Employee> employees = Arrays.asList(
new Employee("John", 25),
new Employee("Alice", 30),
new Employee("Bob", 25),
new Employee("Eve", 35)
);
// প্রথমে বয়স অনুযায়ী, তারপর নাম অনুযায়ী সাজানো
Comparator<Employee> ageComparator = Comparator.comparingInt(e -> e.age);
Comparator<Employee> nameComparator = Comparator.comparing(e -> e.name);
Comparator<Employee> chainComparator = ComparatorUtils.chainedComparator(ageComparator, nameComparator);
employees.sort(chainComparator);
System.out.println("Sorted Employees: " + employees);
}
}
Sorted Employees: [Bob (25), John (25), Alice (30), Eve (35)]
Null Handling Comparator দিয়ে নাল মানগুলো সাজানোর সময় কাস্টম অর্ডার সেট করা যায়।
import org.apache.commons.collections4.ComparatorUtils;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class NullHandlingExample {
public static void main(String[] args) {
List<String> names = Arrays.asList("Alice", null, "Bob", "Eve", null);
// Null প্রথমে রাখে
Collections.sort(names, ComparatorUtils.nullLowComparator(Comparator.naturalOrder()));
System.out.println("Null Low Order: " + names);
// Null শেষে রাখে
Collections.sort(names, ComparatorUtils.nullHighComparator(Comparator.naturalOrder()));
System.out.println("Null High Order: " + names);
}
}
Null Low Order: [null, null, Alice, Bob, Eve]
Null High Order: [Alice, Bob, Eve, null, null]
Fixed Order Comparator দিয়ে নির্দিষ্ট ক্রম অনুসারে ডেটা সাজানো যায়।
import org.apache.commons.collections4.ComparatorUtils;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class FixedOrderExample {
public static void main(String[] args) {
List<String> items = Arrays.asList("Banana", "Apple", "Orange", "Grapes");
// নির্দিষ্ট ক্রম: Apple -> Orange -> Banana -> Grapes
ComparatorUtils.FixedOrderComparator<String> fixedOrder = new ComparatorUtils.FixedOrderComparator<>(
Arrays.asList("Apple", "Orange", "Banana", "Grapes")
);
Collections.sort(items, fixedOrder);
System.out.println("Fixed Order: " + items);
}
}
Fixed Order: [Apple, Orange, Banana, Grapes]
ComparatorUtils অ্যাপাচি কমন্স কালেকশনস লাইব্রেরির একটি কার্যকর ইউটিলিটি, যা জাভার ডেটা সাজানোর প্রক্রিয়াকে সহজতর এবং উন্নত করে। এটি চেইনিং, নাল হ্যান্ডলিং, এবং কাস্টম ক্রম তৈরির মতো কাজগুলোর জন্য আদর্শ সমাধান প্রদান করে।
common.read_more