Guava লাইব্রেরিতে Ordering একটি শক্তিশালী ক্লাস যা ডেটা কম্প্যারিজন এবং সাজানোর কাজ সহজ করে তোলে। সাধারণ Java-তে Comparator ব্যবহার করে তুলনা এবং সাজানোর কাজ করা হয়, তবে Guava এর Ordering ক্লাসের সাহায্যে আপনি আরও শক্তিশালী এবং সহজ উপায়ে এই কাজগুলো করতে পারেন।
Ordering এর ধারণা
Ordering হল Guava লাইব্রেরির একটি বিশেষ ক্লাস যা জেনেরিক টাইপের তালিকা বা সেটের উপাদান সাজানোর জন্য ব্যবহৃত হয়। এটি ডেটার কম্প্যারিজন, ইনভার্স অর্ডারিং, এবং কমপোজড অর্ডারিংয়ের মতো বিভিন্ন সুবিধা প্রদান করে। Guava এর Ordering ক্লাসের সাহায্যে আপনি কাস্টম অর্ডারিং পদ্ধতি তৈরি করতে পারেন, যা সাধারণ Java Comparator-এর চেয়ে অনেক বেশি কার্যকর এবং সুবিধাজনক।
Guava Ordering Class এর বৈশিষ্ট্য
Ordering ক্লাসের কিছু প্রধান বৈশিষ্ট্য:
- Natural Ordering: এটি উপাদানগুলোকে তাদের স্বাভাবিক (natural) অর্ডারে সাজায়, যেমন সংখ্যা বা স্ট্রিং সাজানো।
- Custom Ordering: আপনি কাস্টম কম্প্যারিজন লজিক তৈরি করতে পারেন এবং সেটি দিয়ে সাজানোর কাজ করতে পারেন।
- Inverse Ordering: উল্টো (reverse) অর্ডারিং সম্পাদন করতে পারেন, অর্থাৎ কম্প্যারিজন ফলাফল উল্টো করে সাজানো।
- Compound Ordering: একাধিক কম্প্যারিজন স্টেপ একত্রে ব্যবহার করা যায়।
Guava Ordering Class এর ব্যবহার
1. Natural Ordering (প্রাকৃতিক অর্ডারিং)
Guava লাইব্রেরির Ordering.natural() মেথড দিয়ে আপনি প্রাকৃতিক অর্ডারিং ব্যবহার করতে পারেন, যা স্ট্রিং, সংখ্যা ইত্যাদি সাধারণ অর্ডারিংয়ের জন্য উপযুক্ত।
import com.google.common.collect.Ordering;
import java.util.Arrays;
import java.util.List;
public class NaturalOrderingExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(5, 2, 9, 1, 3);
// প্রাকৃতিক অর্ডারিং ব্যবহার করা
List<Integer> sortedNumbers = Ordering.natural().sortedCopy(numbers);
System.out.println("Sorted Numbers: " + sortedNumbers);
}
}
আউটপুট:
Sorted Numbers: [1, 2, 3, 5, 9]
এখানে, Ordering.natural() মেথডটি ব্যবহার করে আমরা সিস্টেমের প্রাকৃতিক অর্ডার (যেমন ছোট থেকে বড় সংখ্যা) অনুযায়ী ডেটা সাজিয়েছি।
2. Custom Ordering (কাস্টম অর্ডারিং)
এছাড়া, আপনি কাস্টম অর্ডারিংও করতে পারেন। উদাহরণস্বরূপ, আপনি একটি স্ট্রিং তালিকা সাজাতে চাইছেন যেখানে ডেটার দৈর্ঘ্য অনুযায়ী সাজানো হবে।
import com.google.common.collect.Ordering;
import java.util.Arrays;
import java.util.List;
public class CustomOrderingExample {
public static void main(String[] args) {
List<String> words = Arrays.asList("banana", "apple", "pear", "kiwi");
// কাস্টম অর্ডারিং (স্ট্রিং দৈর্ঘ্য অনুসারে সাজানো)
List<String> sortedWords = Ordering.natural().onResultOf(String::length).sortedCopy(words);
System.out.println("Sorted Words by Length: " + sortedWords);
}
}
আউটপুট:
Sorted Words by Length: [kiwi, pear, apple, banana]
এখানে onResultOf(String::length) ব্যবহার করে আমরা স্ট্রিংয়ের দৈর্ঘ্য অনুযায়ী ডেটা সাজিয়েছি।
3. Inverse Ordering (উল্টো অর্ডারিং)
Guava Ordering ক্লাসের মাধ্যমে আপনি উল্টো (reverse) অর্ডারিংও করতে পারেন। এটি করতে reverse() মেথড ব্যবহার করা হয়।
import com.google.common.collect.Ordering;
import java.util.Arrays;
import java.util.List;
public class InverseOrderingExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(5, 2, 9, 1, 3);
// উল্টো অর্ডারিং
List<Integer> reversedNumbers = Ordering.natural().reverse().sortedCopy(numbers);
System.out.println("Reversed Sorted Numbers: " + reversedNumbers);
}
}
আউটপুট:
Reversed Sorted Numbers: [9, 5, 3, 2, 1]
এখানে reverse() মেথড ব্যবহার করে আমরা সংখ্যাগুলো উল্টোভাবে সাজিয়েছি, অর্থাৎ বড় থেকে ছোট।
4. Compound Ordering (একাধিক অর্ডারিং)
Guava এর compound() মেথডের মাধ্যমে আপনি একাধিক অর্ডারিং লজিক একত্রে ব্যবহার করতে পারেন। উদাহরণস্বরূপ, যদি আপনি প্রথমে স্ট্রিংয়ের দৈর্ঘ্য অনুযায়ী সাজাতে চান এবং তারপর একে আলফাবেটিক্যাল অর্ডারেও সাজাতে চান, তবে আপনি দুটি অর্ডারিং একসাথে ব্যবহার করতে পারেন।
import com.google.common.collect.Ordering;
import java.util.Arrays;
import java.util.List;
public class CompoundOrderingExample {
public static void main(String[] args) {
List<String> words = Arrays.asList("banana", "apple", "pear", "kiwi", "mango");
// প্রথমে দৈর্ঘ্য অনুযায়ী এবং তারপর আলফাবেটিক্যাল অনুযায়ী সাজানো
List<String> sortedWords = Ordering.natural()
.onResultOf(String::length)
.compound(Ordering.natural())
.sortedCopy(words);
System.out.println("Compound Sorted Words: " + sortedWords);
}
}
আউটপুট:
Compound Sorted Words: [kiwi, pear, apple, mango, banana]
এখানে, প্রথমে স্ট্রিংয়ের দৈর্ঘ্য অনুযায়ী সাজানো হয়েছে, এবং তারপরে একে আলফাবেটিক্যাল অর্ডারে সাজানো হয়েছে।
সারাংশ
Guava এর Ordering ক্লাস হল একটি শক্তিশালী টুল যা ডেটা সাজানোর কাজ সহজ করে তোলে। এটি natural ordering, custom ordering, inverse ordering, এবং compound ordering সমর্থন করে, যা সাধারণ Java কম্প্যারেটর থেকেও বেশি সুবিধাজনক এবং শক্তিশালী। Guava Ordering ক্লাস ব্যবহারের মাধ্যমে আপনি ডেটা সাজানোর কাজ আরও দ্রুত, সহজ এবং আরও কার্যকরীভাবে করতে পারেন।
Read more