Java তে Collation এবং Sorting

জাভা ইন্টারন্যাশনালাইজেশন (Java Internalization) - Java Technologies

418

Collation এবং Sorting হল ইন্টারন্যাশনালাইজেশন (i18n) প্রক্রিয়ার গুরুত্বপূর্ণ অংশ, যা বিভিন্ন ভাষা এবং অঞ্চলের মধ্যে সঠিকভাবে ডেটা সাজানোর জন্য ব্যবহৃত হয়। বিশেষ করে যখন আপনার অ্যাপ্লিকেশনটি একাধিক ভাষা এবং সংস্কৃতির জন্য উপলব্ধ হয়, তখন সঠিকভাবে ডেটা সাজানো অত্যন্ত গুরুত্বপূর্ণ। Java তে collation এবং sorting এর জন্য Collator এবং Comparator ক্লাস ব্যবহার করা হয়।


Collation এর ধারণা:

Collation হল একটি প্রক্রিয়া যার মাধ্যমে অক্ষরগুলির সঠিক সাজানো বা তুলনা করা হয় বিভিন্ন ভাষা এবং সংস্কৃতির নিয়ম অনুযায়ী। প্রতিটি ভাষায় অক্ষরের সাজানোর নিয়ম আলাদা হতে পারে (যেমন ইংরেজি, ফরাসি, জাপানি, ইত্যাদি), তাই collation ব্যবহারের মাধ্যমে আপনি সঠিকভাবে শব্দ বা অক্ষরগুলো সাজাতে পারেন।

Java তে Collation:

Java তে Collator ক্লাস ব্যবহার করে আপনি বিভিন্ন ভাষার জন্য সঠিক ভাবে অক্ষরের তুলনা এবং সাজানো করতে পারেন।


Collator ক্লাস এর ব্যবহার:

Collator ক্লাস ব্যবহার করে আপনি দুটি স্ট্রিংয়ের তুলনা করতে পারেন, যেখানে ভাষাগত নিয়ম অনুসারে তুলনা করা হয়।

Collator ব্যবহার করে তুলনা করার উদাহরণ:

import java.text.Collator;
import java.util.Locale;

public class CollatorExample {
    public static void main(String[] args) {
        // ইংরেজি ভাষার জন্য Collator তৈরি
        Collator collator = Collator.getInstance(Locale.ENGLISH);
        
        String str1 = "apple";
        String str2 = "banana";
        
        // ভাষাগত নিয়ম অনুসারে তুলনা
        int comparisonResult = collator.compare(str1, str2);
        
        if (comparisonResult < 0) {
            System.out.println(str1 + " comes before " + str2);
        } else if (comparisonResult > 0) {
            System.out.println(str1 + " comes after " + str2);
        } else {
            System.out.println(str1 + " is equal to " + str2);
        }
    }
}

ব্যাখ্যা:

  • Collator.getInstance(Locale) মেথডের মাধ্যমে আমরা একটি নির্দিষ্ট ভাষার জন্য Collator ইনস্ট্যান্স তৈরি করেছি।
  • compare() মেথড ব্যবহার করে দুইটি স্ট্রিংয়ের তুলনা করা হয়েছে এবং ভাষাগত নিয়ম অনুসারে তাদের সম্পর্ক নির্ধারণ করা হয়েছে।

আউটপুট:

apple comes before banana

Sorting এর ধারণা:

Sorting হল একটি প্রক্রিয়া যার মাধ্যমে একটি সজ্জিত বা সাজানো সংগ্রহের মধ্যে উপাদানগুলি ascending বা descending অর্ডারে সাজানো হয়। Java তে sorting সাধারণত Comparator বা Comparable ইন্টারফেসের মাধ্যমে করা হয়।

Java তে Sorting:

  1. Comparable Interface: এটি একটি ইন্টারফেস যা ব্যবহার করে আপনি কোনো ক্লাসের অবজেক্টগুলিকে স্বতন্ত্রভাবে সাজাতে পারবেন।
  2. Comparator Interface: এটি একটি ইন্টারফেস যা ব্যবহার করে আপনি বিভিন্ন সিডিং বা কাস্টম সাজানোর কৌশল তৈরি করতে পারেন।

Comparator এবং Comparable ব্যবহার করে Sorting এর উদাহরণ:

Comparable Interface উদাহরণ:

import java.util.*;

class Person implements Comparable<Person> {
    String name;
    int age;
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    // Comparable interface এর মাধ্যমে Age অনুযায়ী sorting
    @Override
    public int compareTo(Person other) {
        return Integer.compare(this.age, other.age);
    }
}

public class ComparableExample {
    public static void main(String[] args) {
        List<Person> people = new ArrayList<>();
        people.add(new Person("Alice", 30));
        people.add(new Person("Bob", 25));
        people.add(new Person("Charlie", 35));
        
        // Sorting by age using Comparable
        Collections.sort(people);
        
        for (Person person : people) {
            System.out.println(person.name + " - " + person.age);
        }
    }
}

ব্যাখ্যা:

  • Comparable ইন্টারফেসে compareTo() মেথড ব্যবহার করে আমরা age এর উপর ভিত্তি করে Person অবজেক্টগুলিকে সাজাচ্ছি।

আউটপুট:

Bob - 25
Alice - 30
Charlie - 35

Comparator Interface উদাহরণ:

import java.util.*;

class Person {
    String name;
    int age;
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

class NameComparator implements Comparator<Person> {
    // Comparator interface এর মাধ্যমে Name অনুযায়ী sorting
    @Override
    public int compare(Person p1, Person p2) {
        return p1.name.compareTo(p2.name);
    }
}

public class ComparatorExample {
    public static void main(String[] args) {
        List<Person> people = new ArrayList<>();
        people.add(new Person("Alice", 30));
        people.add(new Person("Bob", 25));
        people.add(new Person("Charlie", 35));
        
        // Sorting by name using Comparator
        Collections.sort(people, new NameComparator());
        
        for (Person person : people) {
            System.out.println(person.name + " - " + person.age);
        }
    }
}

ব্যাখ্যা:

  • এখানে Comparator ইন্টারফেসে compare() মেথড ব্যবহার করে আমরা name অনুযায়ী Person অবজেক্টগুলিকে সাজাচ্ছি।

আউটপুট:

Alice - 30
Bob - 25
Charlie - 35

Java তে Collation এবং Sorting এর প্রয়োগ:

  1. Locale Sensitive Sorting:
    • Locale ভিত্তিক তুলনা এবং সাজানোর জন্য Collator ক্লাস ব্যবহৃত হয়। এটি ভাষাগত এবং অঞ্চলের ভিত্তিতে সঠিক অক্ষর শৃঙ্খলা নিশ্চিত করে।
    • উদাহরণস্বরূপ, ফরাসি ভাষায় "é" অক্ষর ইংরেজির "e" এর চেয়ে আলাদা ভাবে সাজানো হবে।
  2. Language Specific Sorting:
    • Java এর Comparator অথবা Collator এর মাধ্যমে আমরা বিভিন্ন ভাষার জন্য সাজানোর নিয়ম নির্ধারণ করতে পারি।

  • Collation এবং Sorting হল ইন্টারন্যাশনালাইজেশনের গুরুত্বপূর্ণ অংশ, যা বিভিন্ন ভাষার এবং অঞ্চলের অক্ষরের সঠিক তুলনা এবং সাজানো নিশ্চিত করে।
  • Java তে Collator ক্লাসের মাধ্যমে ভাষাগত নিয়ম অনুসারে অক্ষর তুলনা এবং সাজানো করা হয়, এবং Comparator এবং Comparable এর মাধ্যমে ডেটাকে ascending বা descending অর্ডারে সাজানো হয়।
  • Sorting এবং Collation এর জন্য Java আপনাকে বহুভাষিক সমর্থন প্রদান করে, যা বৈশ্বিক অ্যাপ্লিকেশনগুলোকে কার্যকরী করে তোলে।
Content added By

Collator ক্লাস Java-তে text sorting এবং comparison এর জন্য ব্যবহৃত একটি ক্লাস। এটি java.text প্যাকেজের অংশ এবং ব্যবহারকারীর লোকেল অনুসারে স্ট্রিংগুলির তুলনা এবং সজ্জা করার জন্য ব্যবহৃত হয়। এই ক্লাসটি বিশেষ করে আন্তর্জাতিকীকরণের (i18n) প্রেক্ষাপটে গুরুত্বপূর্ণ, কারণ এটি বিভিন্ন ভাষা এবং সাংস্কৃতিক শৈলীর মধ্যে শব্দের সঠিক তুলনা এবং সাজানোর ক্ষমতা প্রদান করে।

Collator ক্লাসের ভূমিকা:

  1. String Comparison:
    • Collator ক্লাস ব্যবহার করে দুটি স্ট্রিংয়ের তুলনা করা যায়, যেখানে স্থানীয় ভাষা এবং সাংস্কৃতিক নিয়ম অনুসরণ করা হয়।
  2. Locale-based Sorting:
    • এটি লোকেল ভিত্তিক স্ট্রিং সজ্জার জন্য ব্যবহৃত হয়। প্রতিটি ভাষার জন্য স্ট্রিং সজ্জা এবং তুলনার নিয়ম আলাদা হতে পারে (যেমন, জাপানি, চীনা, ফরাসি ইত্যাদি)।
  3. Text Normalization:
    • Collator ক্লাস স্ট্রিং গুলিকে নরমালাইজ করে তুলনা করতে পারে, যাতে ভাষাগত নিয়ম অনুযায়ী তুলনা করা যায়।

Collator এর মেথড:

  1. getInstance(Locale locale):
    • এই মেথডটি নির্দিষ্ট লোকেল অনুসারে একটি Collator অবজেক্ট রিটার্ন করে।
  2. compare(String str1, String str2):
    • এই মেথডটি দুটি স্ট্রিং তুলনা করে এবং তুলনার ফলাফল রিটার্ন করে (যেমন, সেগুলি সমান হলে ০, অন্যথায় এক বা কম পজিটিভ ভ্যালু)।
  3. setStrength(int level):
    • এই মেথডটি তুলনা করার শক্তি (strength) নির্ধারণ করে, যেখানে আপনি তুলনার ক্ষেত্রে বড় বা ছোট অক্ষর এবং স্থানীয় প্রেক্ষাপটের শর্তগুলো ঠিক করতে পারেন।

Collator ক্লাসের ব্যবহার:

উদাহরণ: Collator ব্যবহার করে স্ট্রিং তুলনা করা

import java.text.Collator;
import java.util.Locale;

public class CollatorExample {
    public static void main(String[] args) {
        // Collator অবজেক্ট তৈরি করা ইংরেজি লোকেল ব্যবহার করে
        Collator collator = Collator.getInstance(Locale.ENGLISH);
        
        String str1 = "apple";
        String str2 = "banana";
        
        // দুটি স্ট্রিং তুলনা করা
        int result = collator.compare(str1, str2);
        
        if (result < 0) {
            System.out.println(str1 + " comes before " + str2);
        } else if (result > 0) {
            System.out.println(str1 + " comes after " + str2);
        } else {
            System.out.println(str1 + " is equal to " + str2);
        }
    }
}

ব্যাখ্যা:

  • এখানে Collator.getInstance(Locale.ENGLISH) মেথড ব্যবহার করে ইংরেজি লোকেল অনুযায়ী একটি Collator অবজেক্ট তৈরি করা হয়েছে।
  • তারপর compare() মেথড ব্যবহার করে দুটি স্ট্রিংয়ের তুলনা করা হয়েছে।
  • ফলস্বরূপ, এটি জানাবে যে "apple" "banana" এর আগে, পরে, অথবা সমান।

আউটপুট:

apple comes before banana

উদাহরণ: Collator শক্তি নির্ধারণ করা

import java.text.Collator;
import java.util.Locale;

public class CollatorStrengthExample {
    public static void main(String[] args) {
        // Collator অবজেক্ট তৈরি করা, ইংরেজি লোকেল ব্যবহার করে
        Collator collator = Collator.getInstance(Locale.ENGLISH);
        
        // শক্তি স্তর সেট করা (PRIMARY, SECONDARY, TERTIARY)
        collator.setStrength(Collator.TERTIARY);
        
        String str1 = "apple";
        String str2 = "Apple";
        
        // দুটি স্ট্রিং তুলনা করা
        int result = collator.compare(str1, str2);
        
        if (result < 0) {
            System.out.println(str1 + " comes before " + str2);
        } else if (result > 0) {
            System.out.println(str1 + " comes after " + str2);
        } else {
            System.out.println(str1 + " is equal to " + str2);
        }
    }
}

ব্যাখ্যা:

  • setStrength() মেথডে Collator.TERTIARY শক্তি স্তর ব্যবহার করা হয়েছে, যা বড় ছোট অক্ষর এবং accent marks (যেমন, অ্যাকসেন্টযুক্ত অক্ষর) এর তুলনা করে।
  • এই উদাহরণে, "apple" এবং "Apple" একই হিসেবে গণ্য হবে যদি শক্তি স্তর PRIMARY বা SECONDARY হয়, তবে TERTIARY শক্তি স্তরের কারণে "apple" এবং "Apple" ভিন্ন হবে।

আউটপুট (যদি Collator.TERTIARY থাকে):

apple comes after Apple

Collator ক্লাসের সুবিধা:

  1. Locale-based Comparison:
    • Collator ক্লাস লোকেল ভিত্তিক স্ট্রিং তুলনা করার ক্ষমতা প্রদান করে। এটি স্থানীয় ভাষার এবং সাংস্কৃতিক পার্থক্যগুলি অনুসরণ করে স্ট্রিং তুলনা করতে সহায়ক।
  2. Internationalization (i18n) Support:
    • এটি Java Internationalization (i18n) প্রক্রিয়াতে অত্যন্ত গুরুত্বপূর্ণ, যেখানে বিভিন্ন ভাষা এবং সংস্কৃতির মধ্যে স্ট্রিং তুলনা করতে হয়।
  3. Customizable Strength:
    • Collator ক্লাসের strength প্রপার্টি দ্বারা আপনি তুলনা করার শক্তি নিয়ন্ত্রণ করতে পারেন, যা বিভিন্ন পরিস্থিতিতে উপকারী হতে পারে (যেমন বড়-ছোট অক্ষর তুলনা বা কেস সেনসেটিভিটি)।
  4. Accents Handling:
    • এই ক্লাসটি accent sensitive comparison সমর্থন করে, যেমন é এবং e এর তুলনা করা।

Collator ক্লাসের সীমাবদ্ধতা:

  1. Performance Overhead:
    • Collator ক্লাস স্থানীয় সাংস্কৃতিক নিয়মগুলি অনুসরণ করতে অতিরিক্ত সময় নিতে পারে, যা কিছু ক্ষেত্রে পারফরম্যান্স প্রভাবিত করতে পারে।
  2. Locale Dependency:
    • Collator ক্লাসের তুলনা স্থানীয় ভাষা এবং সংস্কৃতির উপর নির্ভরশীল, যা একটি ভাষার মধ্যে তুলনার ফলাফল পরিবর্তন করতে পারে। বিভিন্ন ভাষায় একে অপরের তুলনা ভিন্ন হতে পারে।
  3. Limited to String Comparison:
    • Collator কেবল স্ট্রিং তুলনা করে এবং এটি সাধারণ ডেটা টাইপ (যেমন integers, dates ইত্যাদি) বা অন্যান্য non-string data types এর জন্য ব্যবহার করা যায় না।

  • Collator ক্লাস Java-তে internationalization (i18n) প্রক্রিয়ার জন্য একটি অত্যন্ত গুরুত্বপূর্ণ ক্লাস, যা ভাষার ভিত্তিতে স্ট্রিং তুলনা এবং সজ্জা করতে সহায়ক।
  • এটি স্থানীয় ভাষার নিয়ম অনুযায়ী string comparison এবং sorting নিশ্চিত করতে ব্যবহৃত হয়।
  • Collator ক্লাস Java applications-এ মাল্টি-ল্যাঙ্গুয়েজ এবং multicultural সিস্টেমের জন্য অত্যন্ত কার্যকরী, বিশেষ করে text-based data ব্যবহারের ক্ষেত্রে।

Collator ক্লাস স্থানীয় ভাষার তুলনার নিয়মগুলিকে স্বয়ংক্রিয়ভাবে অনুসরণ করে, যাতে আপনার অ্যাপ্লিকেশনটি globalized এবং localized ব্যবহারকারীদের জন্য উপযুক্ত হয়।

Content added By

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:

  1. Locale-specific Letter Sorting:
    • কিছু ভাষায় বিশেষভাবে অক্ষরগুলির সাজানোর নিয়ম আলাদা হতে পারে, যেমন স্প্যানিশ ভাষায় "ch" এবং "ll" আলাদা অক্ষর হিসেবে গণ্য হয়।
  2. Accent Sensitivity:
    • French বা Spanish এর মতো ভাষায়, একে অপরের তুলনায় accented letters যেমন "é" এবং "e" আলাদা হতে পারে, যা tertiary strength এর মাধ্যমে সঠিকভাবে সাজানো যায়।
  3. Case Sensitivity:
    • কিছু ভাষায় case-sensitivity একাধিকভাবে গণ্য হতে পারে, যখন অন্য ভাষায় case-insensitivity মান্য করা হয় (যেমন ইংরেজি ভাষায় "a" এবং "A" একসঙ্গে ধরা হয়)।

Java-এর Collator ক্লাসের মাধ্যমে বিভিন্ন Locale এর জন্য String Sorting অত্যন্ত সহজ এবং কার্যকরী হয়। আপনি strength levels এবং locale-sensitive comparison ব্যবহার করে স্ট্রিং সাজানোর নিয়ম এবং প্রক্রিয়া কাস্টমাইজ করতে পারেন। এতে আপনার অ্যাপ্লিকেশনটি বিশ্বের বিভিন্ন ভাষায় সঠিকভাবে ডেটা সাজাতে সক্ষম হবে, যা আন্তর্জাতিককরণ এবং স্থানীয়করণ (i18n and l10n) প্রক্রিয়ায় গুরুত্বপূর্ণ ভূমিকা রাখে।

Content added By

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 সেট করে। এটি সাধারণত তিনটি স্তরের মধ্যে একটি নির্বাচন করতে ব্যবহৃত হয়:

  1. Collator.PRIMARY: মূল তুলনা, যেখানে কেবলমাত্র অক্ষরের সাধারণ তুলনা করা হয়। এটি case-insensitive এবং accent-insensitive
  2. Collator.SECONDARY: এর মাধ্যমে কেস এবং অ্যাকসেন্টের মধ্যে পার্থক্য বিচার করা হয়, তবে primary level তুলনা হয় না।
  3. 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 ব্যবহার করে, আপনি সজ্জা প্রক্রিয়ার বিভিন্ন স্তরের তুলনা করতে সক্ষম।
Content added By

Internationalization (i18n) এর মধ্যে sorting একটি গুরুত্বপূর্ণ অংশ, কারণ বিভিন্ন ভাষা এবং সংস্কৃতি অনুযায়ী অক্ষরগুলোকে আলাদা ভাবে সাজানো হয়। Java এ, Collator ক্লাস ব্যবহার করে বিভিন্ন ভাষা ও অঞ্চলের জন্য অক্ষর সাজানো যায়। Case Sensitivity এবং Accent Sensitivity এর মতো ভিন্নতা এই সঞ্চালন প্রক্রিয়ায় গুরুত্বপূর্ণ ভূমিকা পালন করে।

Case Sensitivity:

  • Case Sensitivity হল অক্ষরের বড় হাতের এবং ছোট হাতের সংস্করণের মধ্যে পার্থক্য।
  • উদাহরণস্বরূপ, ইংরেজিতে 'A' এবং 'a' দুটি আলাদা অক্ষর। যখন আপনি কেস-সেন্সিটিভ সোর্টিং করবেন, তখন 'A' এবং 'a' আলাদা আলাদা সাজানো হবে।

Accent Sensitivity:

  • Accent Sensitivity হল অক্ষরের উপর থাকা ডায়াক্রিটিক চিহ্নের (যেমন, é, è) মধ্যে পার্থক্য।
  • উদাহরণস্বরূপ, ফরাসি ভাষায় "é" এবং "e" দুটি আলাদা অক্ষর হতে পারে, যখন আপনি accent-sensitive সোর্টিং ব্যবহার করবেন, তখন সেগুলি আলাদা সাজানো হবে।

Java-তে, Collator ক্লাসটি এই দুইটি গুরুত্বপূর্ণ দৃষ্টিকোণ থেকে সঠিকভাবে সোর্টিং করতে সাহায্য করে।


Collator ক্লাস

Collator হল java.text প্যাকেজের একটি ক্লাস যা আন্তর্জাতিককরণের জন্য অক্ষর সজ্জা এবং তুলনা করার জন্য ব্যবহৃত হয়। এটি locale-sensitive sorting সমর্থন করে, যা অর্থাৎ অক্ষরের সাজানো পদ্ধতি ভাষা এবং সংস্কৃতির উপর নির্ভর করে।

Collator ব্যবহার:

  1. Case Sensitivity এবং Accent Sensitivity সহ সঠিকভাবে সজ্জিত করা
  2. ব্যবহারকারীর Locale অনুসারে সঠিক সজ্জা নির্বাচন করা

Collator উদাহরণ:

এই উদাহরণে, আমরা দেখবো কীভাবে Collator ব্যবহার করে Case Sensitivity এবং Accent Sensitivity সহ সঠিকভাবে অক্ষর সজ্জিত করা যায়।

Example 1: Case Sensitive Sorting

import java.text.Collator;
import java.util.*;

public class CaseSensitiveSorting {
    public static void main(String[] args) {
        // Locale ব্যবহার করে Collator তৈরি করা
        Collator collator = Collator.getInstance(Locale.US);
        collator.setStrength(Collator.PRIMARY); // Case-sensitive sort
        
        // একটি List তৈরি করা
        List<String> words = new ArrayList<>();
        words.add("banana");
        words.add("Apple");
        words.add("apple");
        words.add("Banana");

        // Sort the list using collator
        Collections.sort(words, collator);

        // প্রিন্ট করা সজ্জিত তালিকা
        System.out.println("Sorted List (Case-Sensitive): " + words);
    }
}

ব্যাখ্যা:

  • Collator.getInstance(Locale.US): এই কোডটি US Locale অনুযায়ী একটি Collator তৈরি করছে, যা ইংরেজি ভাষার জন্য সঠিক সজ্জা করবে।
  • collator.setStrength(Collator.PRIMARY): এটি case-sensitive সজ্জা সক্ষম করে, যা বড় হাতের অক্ষর এবং ছোট হাতের অক্ষরকে আলাদা করে।

আউটপুট:

Sorted List (Case-Sensitive): [Apple, Banana, apple, banana]

Example 2: Accent Sensitive Sorting

import java.text.Collator;
import java.util.*;

public class AccentSensitiveSorting {
    public static void main(String[] args) {
        // Locale ব্যবহার করে Collator তৈরি করা
        Collator collator = Collator.getInstance(Locale.FRENCH);
        collator.setStrength(Collator.TERTIARY); // Accent-sensitive sort

        // একটি List তৈরি করা
        List<String> words = new ArrayList<>();
        words.add("éclair");
        words.add("eclair");
        words.add("éléphant");
        words.add("elephant");

        // Sort the list using collator
        Collections.sort(words, collator);

        // প্রিন্ট করা সজ্জিত তালিকা
        System.out.println("Sorted List (Accent-Sensitive): " + words);
    }
}

ব্যাখ্যা:

  • Collator.getInstance(Locale.FRENCH): এখানে French Locale ব্যবহৃত হচ্ছে, যাতে ফরাসি ভাষার accent-sensitive সজ্জা করা যায়।
  • collator.setStrength(Collator.TERTIARY): এটি accent-sensitive সজ্জা সক্ষম করে, যার ফলে é এবং e এর মধ্যে পার্থক্য হয়।

আউটপুট:

Sorted List (Accent-Sensitive): [eclair, éclair, elephant, éléphant]

Case Sensitivity এবং Accent Sensitivity এর মধ্যে পার্থক্য

  1. Case Sensitivity:
    • এটি বড় হাতের এবং ছোট হাতের অক্ষরের মধ্যে পার্থক্য করে।
    • উদাহরণস্বরূপ, "Apple" এবং "apple" দুটি আলাদা আলাদা শব্দ হতে পারে।
  2. Accent Sensitivity:
    • এটি অক্ষরের উপর থাকা ডায়াক্রিটিক চিহ্নের (যেমন é, è) মধ্যে পার্থক্য করে।
    • উদাহরণস্বরূপ, ফরাসি ভাষায় "éclair" এবং "eclair" দুটি আলাদা আলাদা শব্দ হতে পারে।

Collator ক্লাসের Strength Levels:

  1. Collator.PRIMARY:
    • এটি কেবল মূল অক্ষরের তুলনা করে এবং case insensitive সজ্জা তৈরি করে।
  2. Collator.SECONDARY:
    • এটি মূল অক্ষরের পাশাপাশি diacritics (accent) এর তুলনা করে। তবে এটি case insensitive
  3. Collator.TERTIARY:
    • এটি মূল অক্ষর, diacritics, এবং case sensitivity সবকিছুর তুলনা করে।
  4. Collator.IDENTICAL:
    • এটি কেবল দুটি অক্ষর বা শব্দকে identical মনে করে এবং exact match চেক করে।

  • Java Sorting তে Case Sensitivity এবং Accent Sensitivity গুরুত্বপূর্ণ কারণ এটি বিভিন্ন ভাষায় অক্ষরের সঠিক সাজানো নিশ্চিত করে।
  • Collator ক্লাস ব্যবহার করে আপনি সহজেই এই ধরনের সঠিক সজ্জা অর্জন করতে পারেন, এবং এটি নির্দিষ্ট Locale এর জন্য সঠিকভাবে কাজ করে।
  • Locale-sensitive সজ্জা ব্যবহার করে আপনি বিভিন্ন ভাষায় text sorting আরো নির্ভুলভাবে পরিচালনা করতে পারেন।
Content added By
Promotion

Are you sure to start over?

Loading...