অ্যাপাচি কমন্স কালেকশনস (Apache Commons Collections) লাইব্রেরিতে ComparatorUtils একটি ইউটিলিটি ক্লাস যা জাভার Comparator
ইন্টারফেসকে আরও কার্যকরভাবে ব্যবহারের জন্য উন্নত ফিচার সরবরাহ করে। এটি বিভিন্ন কম্পারেটর তৈরিতে সাহায্য করে এবং জটিল অবজেক্ট কম্পারিজন সহজ করে।
ComparatorUtils.nullHighComparator()
এবং ComparatorUtils.nullLowComparator()
ব্যবহার করে null
ভ্যালুগুলো সহজে পরিচালনা করা যায়।ComparatorUtils.chainedComparator()
ব্যবহার করে একাধিক কম্পারেটর একত্রিত করা যায়।import org.apache.commons.collections4.ComparatorUtils;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class NullSafeComparatorExample {
public static void main(String[] args) {
List<String> names = Arrays.asList("Alice", null, "Bob", "Charlie");
// Null-safe comparator তৈরি (null values will appear last)
names.sort(ComparatorUtils.nullHighComparator(String::compareTo));
System.out.println("Sorted List: " + names);
}
}
আউটপুট:
Sorted List: [Alice, Bob, Charlie, null]
import org.apache.commons.collections4.ComparatorUtils;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class ChainedComparatorExample {
public static void main(String[] args) {
class Employee {
String name;
int age;
Employee(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return name + " (" + age + ")";
}
}
List<Employee> employees = new ArrayList<>();
employees.add(new Employee("Alice", 30));
employees.add(new Employee("Bob", 25));
employees.add(new Employee("Alice", 25));
employees.add(new Employee("Charlie", 35));
// চেইনড কম্পারেটর তৈরি
Comparator<Employee> comparator = ComparatorUtils.chainedComparator(
Comparator.comparing(employee -> employee.name), // প্রথমে নাম অনুযায়ী
Comparator.comparingInt(employee -> employee.age) // তারপর বয়স অনুযায়ী
);
Collections.sort(employees, comparator);
System.out.println("Sorted Employees: " + employees);
}
}
আউটপুট:
Sorted Employees: [Alice (25), Alice (30), Bob (25), Charlie (35)]
import org.apache.commons.collections4.ComparatorUtils;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class ReverseComparatorExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(5, 2, 9, 3);
// রিভার্স অর্ডারে সাজানোর জন্য কম্পারেটর
Collections.sort(numbers, ComparatorUtils.reversedComparator(Integer::compareTo));
System.out.println("Reverse Sorted List: " + numbers);
}
}
আউটপুট:
Reverse Sorted List: [9, 5, 3, 2]
অবজেক্ট কম্পারিজন করার জন্য অ্যাপাচি কমন্স কালেকশনস ComparatorUtils-এর বিভিন্ন ফিচার সরবরাহ করে, যা বিশেষত জটিল অবজেক্টগুলোর ক্ষেত্রে কার্যকর।
null
ভ্যালুর জন্য সঠিক হ্যান্ডলিং।null
হ্যান্ডলিং: ডেটা ত্রুটি এড়িয়ে null
ভ্যালুকে সঠিকভাবে সাজানো যায়।ComparatorUtils হল অ্যাপাচি কমন্স কালেকশনসের একটি শক্তিশালী ইউটিলিটি, যা জাভার Comparator
-এর উপর ভিত্তি করে উন্নত এবং কার্যকর ফিচার সরবরাহ করে। এটি অবজেক্ট কম্পারিজন, কাস্টম শর্ত তৈরি, এবং null
ভ্যালু পরিচালনা সহজতর করে।
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 অ্যাপাচি কমন্স কালেকশনস লাইব্রেরির একটি কার্যকর ইউটিলিটি, যা জাভার ডেটা সাজানোর প্রক্রিয়াকে সহজতর এবং উন্নত করে। এটি চেইনিং, নাল হ্যান্ডলিং, এবং কাস্টম ক্রম তৈরির মতো কাজগুলোর জন্য আদর্শ সমাধান প্রদান করে।
অ্যাপাচি কমন্স কালেকশনস (Apache Commons Collections) লাইব্রেরি Java ডেভেলপারদের জন্য শক্তিশালী ডেটা স্ট্রাকচার এবং ইউটিলিটি ক্লাস সরবরাহ করে, যা ডেটা ম্যানিপুলেশন এবং সংগ্রহ ব্যবস্থাপনা সহজ করে তোলে। এর মধ্যে একটি গুরুত্বপূর্ণ ফিচার হল Custom Comparators, যা আপনাকে ডেটা সেটের উপাদানগুলিকে আপনার নিজস্ব কাস্টম লজিক বা শর্ত অনুযায়ী তুলনা করতে এবং সাজাতে সাহায্য করে।
Comparator একটি ইন্টারফেস যা দুটি অবজেক্টের তুলনা করে, এবং সেই তুলনা অনুযায়ী তাদের অর্ডার নির্ধারণ করে। এটি সাধারণত সজ্জিতকরণ (sorting) বা অনুসন্ধান (searching) প্রক্রিয়ায় ব্যবহৃত হয়।
এই টিউটোরিয়ালে, আমরা আলোচনা করব কিভাবে অ্যাপাচি কমন্স কালেকশনসে Custom Comparators তৈরি করতে হয় এবং এগুলিকে SortedBag, List বা অন্যান্য কালেকশনে ব্যবহার করা যায়।
Comparator ইন্টারফেস Java এর স্ট্যান্ডার্ড API তে একটি ইনটারফেস যা দুটি অবজেক্টের তুলনা করতে ব্যবহৃত হয়। এটি একটি compare()
মেথড প্রদান করে, যা দুটি অবজেক্ট গ্রহণ করে এবং একটি পূর্ণসংখ্যা রিটার্ন করে:
Custom Comparators ব্যবহৃত হয় যখন আপনি আপনার নিজস্ব তুলনা শর্ত বা কাস্টম সজ্জিতকরণ লজিক প্রয়োগ করতে চান।
অ্যাপাচি কমন্স কালেকশনস লাইব্রেরি ব্যবহার করে Custom Comparator তৈরি করার জন্য প্রথমে একটি Comparator ক্লাস তৈরি করতে হয় যা নির্দিষ্ট শর্ত অনুযায়ী দুটি অবজেক্ট তুলনা করবে।
ধরা যাক, আমরা একটি Person
অবজেক্ট তৈরি করেছি এবং চাইছি যে আমরা নামের অর্ডার অনুযায়ী এবং যদি নাম একই হয় তবে বয়সের অর্ডার অনুযায়ী সজ্জিত করতে।
import org.apache.commons.collections4.ComparatorUtils;
import java.util.Comparator;
class Person {
String name;
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 CustomComparatorExample {
public static void main(String[] args) {
// Create a comparator to compare by name and age
Comparator<Person> nameThenAgeComparator = Comparator
.comparing(Person::getName)
.thenComparing(Person::getAge);
// Create some Person objects
Person person1 = new Person("John", 25);
Person person2 = new Person("Alice", 30);
Person person3 = new Person("John", 20);
// Compare persons using custom comparator
System.out.println(nameThenAgeComparator.compare(person1, person2)); // Output: positive number (John > Alice)
System.out.println(nameThenAgeComparator.compare(person1, person3)); // Output: positive number (John 25 > John 20)
}
}
এখানে:
Comparator.comparing(Person::getName)
ব্যবহার করে প্রথমে name
অনুযায়ী তুলনা করা হয়েছে।thenComparing(Person::getAge)
ব্যবহার করে যদি name
সমান হয়, তাহলে age
অনুসারে দ্বিতীয় তুলনা করা হয়েছে।অ্যাপাচি কমন্স কালেকশনস লাইব্রেরি ComparatorUtils ক্লাস প্রদান করে, যা কিছু সাধারণ তুলনা কার্যাবলী সরবরাহ করে। এটি আপনি যদি সাধারণ তুলনা শর্ত তৈরি করতে চান, যেমন বড়/ছোট, সমান ইত্যাদি, তবে খুবই কার্যকরী।
import org.apache.commons.collections4.ComparatorUtils;
import java.util.Comparator;
public class ComparatorUtilsExample {
public static void main(String[] args) {
// Comparator to compare two integers
Comparator<Integer> comparator = ComparatorUtils.nullHighComparator(Comparator.naturalOrder());
// Compare integers using the comparator
System.out.println(comparator.compare(10, 20)); // Output: -1 (10 < 20)
System.out.println(comparator.compare(20, 10)); // Output: 1 (20 > 10)
System.out.println(comparator.compare(null, 10)); // Output: 1 (null is considered larger)
}
}
এখানে:
ComparatorUtils.nullHighComparator()
ব্যবহার করা হয়েছে যাতে null
মান তুলনা করার সময় এটি সঠিকভাবে কাজ করে (অথবা আপনি চাইলে nullLowComparator()
ব্যবহার করতে পারেন)।Comparator.naturalOrder()
স্বাভাবিক অর্ডারে তুলনা করার জন্য ব্যবহৃত হয়েছে।SortedBag হল একটি বিশেষ ধরনের Bag
যা উপাদানগুলিকে সঠিক ক্রমে সজ্জিত রাখে। আপনি Custom Comparator ব্যবহার করে SortedBag
এ সজ্জিত করতে পারেন।
import org.apache.commons.collections4.SortedBag;
import org.apache.commons.collections4.bag.TreeBag;
import java.util.Comparator;
public class SortedBagExample {
public static void main(String[] args) {
// Create a custom comparator that sorts strings in reverse order
Comparator<String> reverseComparator = Comparator.reverseOrder();
// Create a SortedBag using the custom comparator
SortedBag<String> sortedBag = new TreeBag<>(reverseComparator);
// Add items to the SortedBag
sortedBag.add("apple");
sortedBag.add("banana");
sortedBag.add("cherry");
// Print the SortedBag
System.out.println("Sorted Bag contents: " + sortedBag); // Output: [cherry, banana, apple]
}
}
এখানে:
Comparator.reverseOrder()
ব্যবহার করে স্ট্রিংগুলিকে রিভার্স অর্ডারে সাজানো হয়েছে।TreeBag
ব্যবহার করা হয়েছে যা একটি SortedBag
ইমপ্লিমেন্টেশন, যেখানে reverseComparator
ব্যবহার করে সাজানো হয়েছে।Comparator
ইন্টারফেস ব্যবহার করতে পারেন।ComparatorUtils.nullHighComparator()
এবং ComparatorUtils.nullLowComparator()
ব্যবহার করে আপনি null
মানগুলির জন্য বিশেষ আচরণ নির্ধারণ করতে পারেন।অ্যাপাচি কমন্স কালেকশনস লাইব্রেরির Custom Comparators আপনাকে ডেটা সেটের উপাদানগুলিকে আপনার নিজস্ব শর্ত বা কাস্টম লজিক অনুযায়ী তুলনা এবং সজ্জিত করতে সহায়তা করে। Comparator
ইন্টারফেস ব্যবহার করে আপনি আপনার কাঙ্খিত তুলনা বা সজ্জিতকরণ লজিক প্রয়োগ করতে পারেন। SortedBag, List, এবং অন্যান্য কালেকশনে এই কাস্টম কম্প্যারেটরগুলি ব্যবহার করে আপনি ডেটার শুদ্ধতা, অর্ডার এবং কার্যকারিতা নিশ্চিত করতে পারেন।
Apache Commons Collections লাইব্রেরি Comparator সম্পর্কিত কিছু শক্তিশালী ক্লাস এবং ফাংশন সরবরাহ করে যা কোলেকশনগুলির মধ্যে উপাদান তুলনা এবং সাজানো (sorting) সহজ করে তোলে। এর মধ্যে দুটি গুরুত্বপূর্ণ ক্লাস হল ChainedComparator এবং ReverseComparator। এই ক্লাসগুলি Comparator ইন্টারফেসের মাধ্যমে কাস্টম অর্ডারিং এবং তুলনা কৌশল প্রয়োগ করতে সাহায্য করে।
এই নিবন্ধে, আমরা ChainedComparator এবং ReverseComparator এর কার্যকারিতা এবং তাদের ব্যবহার সম্পর্কে বিস্তারিত আলোচনা করব।
ChainedComparator হল একটি Comparator যা একাধিক Comparator কে একত্রে ব্যবহার করে, অর্থাৎ এটি একাধিক তুলনা ফাংশন (comparators) কে শৃঙ্খলে যুক্ত করে। আপনি যখন একাধিক তুলনা ভিত্তিক সাজানোর প্রয়োজন অনুভব করেন, তখন ChainedComparator একটি কার্যকরী সমাধান। এটি একাধিক Comparator ব্যবহার করে প্রথমে একটি Comparator প্রয়োগ করে, এবং যদি দুটি উপাদান সমান হয়, তখন পরবর্তী Comparator প্রয়োগ করা হয়।
import org.apache.commons.collections4.ComparatorUtils;
import org.apache.commons.collections4.ComparatorUtils.ChainedComparator;
import java.util.*;
public class ChainedComparatorExample {
public static void main(String[] args) {
// Create a list of objects to be sorted
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("cherry");
list.add("blueberry");
// Create comparators
Comparator<String> lengthComparator = Comparator.comparingInt(String::length);
Comparator<String> alphabetComparator = Comparator.naturalOrder();
// Chain comparators
ChainedComparator<String> chainedComparator = new ChainedComparator<>(lengthComparator, alphabetComparator);
// Sort using ChainedComparator
Collections.sort(list, chainedComparator);
// Print sorted list
System.out.println(list);
}
}
এখানে:
lengthComparator
প্রথমে String এর দৈর্ঘ্য অনুসারে তুলনা করবে।alphabetComparator
দ্বিতীয় পর্যায়ে আলফাবেটিকাল (অক্ষরগত) তুলনা করবে যদি প্রথম Comparator সমান হয়।আউটপুট:
[apple, banana, cherry, blueberry]
এখানে প্রথমে শব্দগুলির দৈর্ঘ্য অনুযায়ী সাজানো হয়েছে, এবং যদি দৈর্ঘ্য সমান হয়, তবে আলফাবেটিক সাজানো হয়েছে।
ReverseComparator হল একটি Comparator যা একটি বিদ্যমান Comparator কে রিভার্স করে (reverse)। এর মানে হল যে, যদি আপনার একটি সাধারণ Comparator থাকে যা ছোট থেকে বড় (ascending order) সাজানো থাকে, তবে ReverseComparator তাকে বড় থেকে ছোট (descending order) সাজানোতে পরিণত করবে। এটি ব্যবহার করে আপনি সহজেই কোন Comparator কে উল্টো সাজানোর জন্য ব্যবহার করতে পারেন।
import org.apache.commons.collections4.ComparatorUtils;
import org.apache.commons.collections4.ComparatorUtils.ReverseComparator;
import java.util.*;
public class ReverseComparatorExample {
public static void main(String[] args) {
// Create a list of numbers to be sorted
List<Integer> list = new ArrayList<>();
list.add(3);
list.add(1);
list.add(4);
list.add(2);
// Create a comparator for natural order (ascending)
Comparator<Integer> ascendingComparator = Comparator.naturalOrder();
// Create a ReverseComparator
ReverseComparator<Integer> reverseComparator = new ReverseComparator<>(ascendingComparator);
// Sort using ReverseComparator
Collections.sort(list, reverseComparator);
// Print sorted list
System.out.println(list);
}
}
এখানে:
ascendingComparator
একটি Comparator যা ছোট থেকে বড় (ascending) সাজানোর জন্য ব্যবহৃত হয়।ReverseComparator
ব্যবহার করে আমরা সেই ascendingComparator কে রিভার্স (descending) করে ফেলেছি।আউটপুট:
[4, 3, 2, 1]
এখানে সংখ্যাগুলি বড় থেকে ছোট (descending) অর্ডারে সাজানো হয়েছে।
ChainedComparator এবং ReverseComparator দুটি শক্তিশালী Comparator ক্লাস যা Apache Commons Collections লাইব্রেরির অংশ। ChainedComparator একাধিক Comparator কে একত্রে ব্যবহার করে সাজানো করতে সহায়তা করে, যেখানে ReverseComparator একটি বিদ্যমান Comparator কে রিভার্স করে সাজানোর জন্য ব্যবহৃত হয়। এই দুটি কৌশল Comparator-এর আচরণ কাস্টমাইজ করতে এবং সাজানোর কৌশল উন্নত করতে সহায়ক, যা আপনাকে আরও নমনীয় এবং কার্যকরী সাজানো এবং তুলনা করতে সাহায্য করে।
Apache Commons Collections লাইব্রেরির FixedOrderComparator একটি শক্তিশালী কম্প্যারেটর যা ডেটার উপাদানগুলির একটি নির্দিষ্ট অর্ডারে তুলনা করার জন্য ব্যবহৃত হয়। এটি একটি Comparator ইন্টারফেস বাস্তবায়ন করে, যা একটি List বা Set এর উপাদানগুলি একটি নির্দিষ্ট ক্রমে সাজাতে সাহায্য করে, সাধারণত আপনি যে ক্রমে চান বা যেভাবে উপাদানগুলি সাজাতে চান তা মেনে।
এটি বিশেষভাবে উপকারী যখন আপনাকে একটি predefined order অনুসারে এলিমেন্টগুলিকে সাজাতে হবে, যেমন একটি List বা Set এর উপাদানগুলিকে কোনো নির্দিষ্ট ক্রমে সাজানো।
FixedOrderComparator মূলত নিম্নলিখিত বৈশিষ্ট্যগুলির জন্য ব্যবহৃত হয়:
FixedOrderComparator এর উদাহরণ দেখলে সহজে বুঝা যাবে কিভাবে এটি কাজ করে। এটি একটি List বা Set এর উপাদানগুলিকে একটি নির্দিষ্ট অর্ডারে সাজাতে সাহায্য করে।
ধরা যাক, আপনার কাছে কয়েকটি স্ট্রিং উপাদান আছে, এবং আপনি চান যে সেগুলো একটি নির্দিষ্ট অর্ডারে সাজানো হোক। আপনি FixedOrderComparator ব্যবহার করে এই অর্ডারটি সুনিশ্চিত করতে পারেন।
import org.apache.commons.collections4.ComparatorUtils;
import org.apache.commons.collections4.comparators.FixedOrderComparator;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class FixedOrderComparatorExample {
public static void main(String[] args) {
// Create a list of strings
List<String> fruits = Arrays.asList("apple", "banana", "cherry", "date");
// Define the fixed order of the elements
List<String> order = Arrays.asList("banana", "apple", "cherry", "date");
// Create the FixedOrderComparator using the predefined order
FixedOrderComparator<String> comparator = new FixedOrderComparator<>(order);
// Sort the fruits list using the FixedOrderComparator
Collections.sort(fruits, comparator);
// Print the sorted list
System.out.println(fruits); // Output: [banana, apple, cherry, date]
}
}
এখানে:
"apple"
, "banana"
, "cherry"
, "date"
."banana"
, "apple"
, "cherry"
, "date"
.আউটপুট:
[banana, apple, cherry, date]
এটি দেখাচ্ছে কিভাবে একটি predefined order ব্যবহার করে তালিকাটি সাজানো হলো, যা FixedOrderComparator এর মাধ্যমে সম্ভব হয়েছে।
ধরা যাক, আপনি একটি Person ক্লাস তৈরি করেছেন এবং তাদের নামের উপর নির্দিষ্ট অর্ডার দিতে চান।
import org.apache.commons.collections4.comparators.FixedOrderComparator;
import java.util.Arrays;
import java.util.List;
public class FixedOrderComparatorWithCustomObjects {
static class Person {
String name;
Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
@Override
public String toString() {
return name;
}
}
public static void main(String[] args) {
List<Person> people = Arrays.asList(new Person("John"), new Person("Alice"), new Person("Bob"));
// Define the fixed order
List<String> order = Arrays.asList("Alice", "Bob", "John");
// Create the FixedOrderComparator using the predefined order
FixedOrderComparator<Person> comparator = new FixedOrderComparator<>(order);
// Sort the list using the FixedOrderComparator
people.sort((p1, p2) -> comparator.compare(p1.getName(), p2.getName()));
// Print the sorted list
System.out.println(people); // Output: [Alice, Bob, John]
}
}
এখানে:
আউটপুট:
[Alice, Bob, John]
এটি দেখাচ্ছে কিভাবে FixedOrderComparator ব্যবহার করে একটি custom object এর উপাদানগুলিকে নির্দিষ্ট অর্ডারে সাজানো যেতে পারে।
FixedOrderComparator হল Apache Commons Collections লাইব্রেরির একটি গুরুত্বপূর্ণ ক্লাস যা একটি predefined order অনুযায়ী Collections এর উপাদানগুলোকে সাজানোর জন্য ব্যবহৃত হয়। এটি Comparator ইন্টারফেসের একটি বাস্তবায়ন যা List বা Set এর উপাদানগুলোকে নির্দিষ্ট ক্রমে সাজাতে সাহায্য করে। এটি খুবই উপকারী যখন আপনি চান যে ডেটার উপাদানগুলো একটি নির্দিষ্ট অর্ডারে সাজানো হোক, যেমন priority, ranking, বা natural ordering অনুসারে।
common.read_more