Collation হল একটি প্রক্রিয়া যা স্ট্রিং ডেটার সঠিক সাজানো নিশ্চিত করে, যেমন একটি স্থানীয় ভাষায় আলফাবেটিক্যাল বা সংখ্যা-ভিত্তিক আদেশের ভিত্তিতে। Java ইন্টারন্যাশনালাইজেশন (i18n) এবং লোকালাইজেশন (l10n) ব্যবস্থাপনার জন্য Collator ক্লাস ব্যবহৃত হয়, যা বিভিন্ন ভাষার জন্য কাস্টম সজ্জা (collation) রুলস তৈরি করার ক্ষমতা প্রদান করে।
Custom Collation Rules তৈরি করার জন্য Collator ক্লাস এবং Collator.setStrength() এবং Collator.setDecomposition() এর মতো মেথড ব্যবহার করা হয়।
Collator Class এর পরিচিতি
Collator ক্লাসটি Java এ string comparison এবং sorting করার জন্য ব্যবহৃত হয়। এটি একটি abstract class যা Locale-specific কাস্টম সজ্জা নিয়ম তৈরি করার জন্য ব্যবহার করা যেতে পারে।
Java 8 থেকে Collator ক্লাসে আরো অনেক নতুন ফিচার এসেছে, যার মধ্যে locale-sensitive sorting এবং collation rules customization অন্তর্ভুক্ত।
Collator ক্লাসের গুরুত্বপূর্ণ মেথড:
getInstance(Locale locale): এটি একটি নির্দিষ্ট locale এর জন্য Collator অবজেক্ট তৈরি করে।setStrength(int strength): এটি কাস্টম সজ্জার শক্তি নির্ধারণ করে। শক্তির মান বিভিন্ন রকমের সজ্জা নিয়ম নির্ধারণ করে, যেমন primary, secondary, tertiary ইত্যাদি।setDecomposition(int decomposition): এটি ক্যারেক্টার ডিকম্পোজিশন নিয়ন্ত্রণ করে (যেমন, accent-sensitive বা accent-insensitive হওয়া উচিত কিনা)।compare(String string1, String string2): এটি দুটি স্ট্রিংয়ের তুলনা করে এবং তাদের সজ্জা অনুযায়ী ফলাফল প্রদান করে।
Custom Collation Rule তৈরি করার উদাহরণ:
এই উদাহরণে, আমরা একটি কাস্টম কোল্লেশন রুল তৈরি করব, যেখানে accent-sensitive সজ্জা এবং case-insensitive সজ্জা ব্যবহার করা হবে।
Custom Collator Example
import java.text.Collator;
import java.util.*;
public class CustomCollationExample {
public static void main(String[] args) {
// Locale সেট করা
Locale locale = new Locale("en", "US");
// Collator অবজেক্ট তৈরি করা
Collator collator = Collator.getInstance(locale);
// Collator সেটিংস কাস্টমাইজ করা
collator.setStrength(Collator.PRIMARY); // Primary strength - accent insensitive
collator.setDecomposition(Collator.NO_DECOMPOSITION); // No decomposition - accent-insensitive
// তুলনা করার জন্য কিছু স্ট্রিং
String string1 = "resume";
String string2 = "résumé";
// স্ট্রিং তুলনা করা
int result = collator.compare(string1, string2);
if (result == 0) {
System.out.println("The strings are considered equal.");
} else if (result < 0) {
System.out.println("\"" + string1 + "\" is less than \"" + string2 + "\".");
} else {
System.out.println("\"" + string1 + "\" is greater than \"" + string2 + "\".");
}
// স্ট্রিংয়ের সজ্জার পরিবর্তন দেখতে আসল একটি লিস্ট সাজানো
List<String> words = Arrays.asList("resume", "résumé", "apple", "banana");
Collections.sort(words, collator);
System.out.println("Sorted words:");
for (String word : words) {
System.out.println(word);
}
}
}
ব্যাখ্যা:
Collator.getInstance(locale)মেথড দিয়ে আমরা US English এর জন্য একটি Collator অবজেক্ট তৈরি করেছি।setStrength(Collator.PRIMARY)মেথড ব্যবহার করে আমরা সজ্জার শক্তি নির্ধারণ করেছি, যাতে এটি accent-insensitive হয়।setDecomposition(Collator.NO_DECOMPOSITION)এর মাধ্যমে accent-insensitive সজ্জা নিশ্চিত করেছি (অর্থাৎ অক্ষরের উপরে অভ্যন্তরীণ চিহ্ন বা টোন সঠিকভাবে সজ্জা প্রক্রিয়ায় আসবে না)।- তারপর
compare()মেথড ব্যবহার করে আমরা দুটি স্ট্রিংয়ের তুলনা করেছি এবং তাদের সজ্জার ফলাফল দেখেছি। - সবশেষে, একটি লিস্ট
Collections.sort()দিয়ে সাজানো হয়েছে Collator ব্যবহার করে।
আউটপুট:
"resume" is less than "résumé".
Sorted words:
apple
banana
resume
résumé
Collator Strength Levels:
Collator.setStrength() মেথডটি strength বা comparison level সেট করে। এটি সাধারণত তিনটি স্তরের মধ্যে একটি নির্বাচন করতে ব্যবহৃত হয়:
- Collator.PRIMARY: মূল তুলনা, যেখানে কেবলমাত্র অক্ষরের সাধারণ তুলনা করা হয়। এটি case-insensitive এবং accent-insensitive।
- Collator.SECONDARY: এর মাধ্যমে কেস এবং অ্যাকসেন্টের মধ্যে পার্থক্য বিচার করা হয়, তবে primary level তুলনা হয় না।
- Collator.TERTIARY: এই স্তরে case-sensitive এবং accent-sensitive তুলনা করা হয়।
Custom Collation Rule তৈরি করার আরও উদাহরণ:
Accent-Sensitive এবং Case-Sensitive Sorting:
import java.text.Collator;
import java.util.*;
public class AccentSensitiveCollationExample {
public static void main(String[] args) {
Locale locale = new Locale("en", "US");
Collator collator = Collator.getInstance(locale);
// Strength set to tertiary for accent and case sensitive comparison
collator.setStrength(Collator.TERTIARY);
// Sorting example
List<String> words = Arrays.asList("resume", "résumé", "apple", "banana");
Collections.sort(words, collator);
System.out.println("Sorted words (Accent and Case Sensitive):");
for (String word : words) {
System.out.println(word);
}
}
}
আউটপুট:
Sorted words (Accent and Case Sensitive):
apple
banana
resume
résumé
- Custom Collation Rules তৈরি করার মাধ্যমে আপনি string comparison এবং sorting আরও locale-sensitive এবং language-specific করতে পারেন। এটি বিশেষ করে internationalized applications তৈরি করার সময় গুরুত্বপূর্ণ, যেখানে alphabetical sorting, accent-sensitive comparisons, এবং case-sensitive সিদ্ধান্ত গুলি ভাষার প্রয়োজন অনুযায়ী পরিচালিত হয়।
- Java তে Collator ক্লাসের মাধ্যমে আপনি কাস্টম সজ্জা নিয়ম তৈরি করতে পারেন এবং locale-specific rules ব্যবহার করে কার্যকরী স্ট্রিং তুলনা করতে পারেন।
- Strength levels এবং decomposition settings ব্যবহার করে, আপনি সজ্জা প্রক্রিয়ার বিভিন্ন স্তরের তুলনা করতে সক্ষম।
Read more