String Sorting বা String Ordering এর প্রক্রিয়া ইন্টারন্যাশনালাইজেশনে অত্যন্ত গুরুত্বপূর্ণ, কারণ প্রতিটি ভাষা বা অঞ্চল আলাদা ভাবে শব্দ বা স্ট্রিং গুলি সাজাতে পারে। Java এর Internationalization (i18n) এ, বিভিন্ন Locale এর জন্য স্ট্রিং সাজানোর জন্য Java Collator ক্লাস এবং Locale-sensitive string sorting techniques ব্যবহার করা হয়।
Java-এর Collator ক্লাস স্ট্রিংগুলোকে একটি নির্দিষ্ট locale অনুযায়ী সাজানোর জন্য ব্যবহৃত হয়। এটি ভাষা বা অঞ্চলের বিভিন্ন নিয়ম এবং সংস্কৃতির উপর ভিত্তি করে স্ট্রিং সাজাতে সাহায্য করে, যেমন অক্ষরের তুলনা, ক্যাপিটালাইজেশন, বিশেষ চিহ্নের অগ্রাধিকার ইত্যাদি।
Collator ক্লাসের ব্যবহার:
Java-এর Collator ক্লাস java.text প্যাকেজের অন্তর্গত এবং এটি Locale-sensitive স্ট্রিং comparison এবং sorting এর জন্য ব্যবহৃত হয়।
Collator ক্লাসের প্রধান মেথডসমূহ:
Collator.getInstance(): নির্দিষ্ট Locale এর জন্য একটি Collator অবজেক্ট তৈরি করে।compare(String str1, String str2): দুটি স্ট্রিং তুলনা করে এবং তাদের তুলনার ফলাফল রিটার্ন করে (যেমন, ছোট, বড়, সমান)।setStrength(int strength): তুলনা শক্তির স্তর নির্ধারণ করে (যেমন, সঠিক বর্ণ, কেস, বা এক্সটেনডেড তুলনা)।
String Sorting Techniques for Different Locales:
Java-তে স্ট্রিং সাজানোর জন্য আপনি Collator ক্লাস ব্যবহার করতে পারেন, যা প্রতিটি Locale অনুযায়ী স্ট্রিংগুলোকে সঠিকভাবে সাজায়।
উদাহরণ: English এবং French Locales এর জন্য String Sorting
import java.text.Collator;
import java.util.*;
public class LocaleStringSortingExample {
public static void main(String[] args) {
// ইংরেজি ভাষার Locale তৈরি
Locale englishLocale = new Locale("en", "US");
// ফরাসি ভাষার Locale তৈরি
Locale frenchLocale = new Locale("fr", "FR");
// Collator অবজেক্ট তৈরি
Collator englishCollator = Collator.getInstance(englishLocale);
Collator frenchCollator = Collator.getInstance(frenchLocale);
// স্ট্রিংয়ের একটি লিস্ট
List<String> words = new ArrayList<>();
words.add("banana");
words.add("Apple");
words.add("cherry");
words.add("apple");
// ইংরেজি Locale ব্যবহার করে স্ট্রিং গুলি সাজানো
Collections.sort(words, englishCollator);
System.out.println("Sorted in English locale: " + words);
// ফরাসি Locale ব্যবহার করে স্ট্রিং গুলি সাজানো
Collections.sort(words, frenchCollator);
System.out.println("Sorted in French locale: " + words);
}
}
ব্যাখ্যা:
- এখানে আমরা English এবং French এর জন্য দুটি আলাদা Locale তৈরি করেছি।
- তারপর Collator.getInstance(Locale locale) মেথড ব্যবহার করে প্রতিটি Locale এর জন্য আলাদা Collator অবজেক্ট তৈরি করা হয়েছে।
- Collections.sort() মেথড ব্যবহার করে স্ট্রিংগুলি সাজানো হয়েছে, যেখানে আমরা Collator অবজেক্ট ব্যবহার করছি।
আউটপুট:
Sorted in English locale: [Apple, apple, banana, cherry]
Sorted in French locale: [Apple, apple, banana, cherry]
Strength of Collator:
Collator.setStrength(int strength) মেথডটি স্ট্রিং তুলনা করার সময় কীভাবে তারা সাজানো হবে তা নিয়ন্ত্রণ করতে সহায়ক।
- Collator.PRIMARY: শুধুমাত্র বেসিক অক্ষর তুলনা করা হয় (যেমন "a" এবং "A" একই মনে করা হবে)।
- Collator.SECONDARY: কেস এবং কিছু বিশেষ অক্ষরেও তুলনা করা হয় (যেমন "a" এবং "A" আলাদা হবে)।
- Collator.TERTIARY: এই স্তরে আরোละเอียด তুলনা করা হয়, যেমন accent sensitivity (যেমন "é" এবং "e" আলাদা হবে)।
উদাহরণ: Collator Strength Setting
import java.text.Collator;
import java.util.*;
public class CollatorStrengthExample {
public static void main(String[] args) {
Locale locale = new Locale("en", "US");
Collator collator = Collator.getInstance(locale);
// Set strength to TERTIARY for detailed comparison
collator.setStrength(Collator.TERTIARY);
List<String> words = new ArrayList<>();
words.add("resume");
words.add("résumé");
words.add("Resumé");
// Sorting with tertiary comparison (includes accent sensitivity)
Collections.sort(words, collator);
System.out.println("Sorted with tertiary strength: " + words);
}
}
আউটপুট:
Sorted with tertiary strength: [Resumé, resume, résumé]
String Sorting with Locale-Sensitive Comparison:
- Locale-specific Letter Sorting:
- কিছু ভাষায় বিশেষভাবে অক্ষরগুলির সাজানোর নিয়ম আলাদা হতে পারে, যেমন স্প্যানিশ ভাষায় "ch" এবং "ll" আলাদা অক্ষর হিসেবে গণ্য হয়।
- Accent Sensitivity:
- French বা Spanish এর মতো ভাষায়, একে অপরের তুলনায় accented letters যেমন "é" এবং "e" আলাদা হতে পারে, যা tertiary strength এর মাধ্যমে সঠিকভাবে সাজানো যায়।
- Case Sensitivity:
- কিছু ভাষায় case-sensitivity একাধিকভাবে গণ্য হতে পারে, যখন অন্য ভাষায় case-insensitivity মান্য করা হয় (যেমন ইংরেজি ভাষায় "a" এবং "A" একসঙ্গে ধরা হয়)।
Java-এর Collator ক্লাসের মাধ্যমে বিভিন্ন Locale এর জন্য String Sorting অত্যন্ত সহজ এবং কার্যকরী হয়। আপনি strength levels এবং locale-sensitive comparison ব্যবহার করে স্ট্রিং সাজানোর নিয়ম এবং প্রক্রিয়া কাস্টমাইজ করতে পারেন। এতে আপনার অ্যাপ্লিকেশনটি বিশ্বের বিভিন্ন ভাষায় সঠিকভাবে ডেটা সাজাতে সক্ষম হবে, যা আন্তর্জাতিককরণ এবং স্থানীয়করণ (i18n and l10n) প্রক্রিয়ায় গুরুত্বপূর্ণ ভূমিকা রাখে।
Read more