Collections এর জন্য Efficient Sorting Techniques গাইড ও নোট

Java Technologies - গুয়াভা (Guava) - Ordering এবং Comparators
278

গুয়াভা (Guava) লাইব্রেরি Java Collections এর জন্য কিছু কার্যকরী এবং দক্ষ সোর্টিং (sorting) টেকনিক প্রদান করে। সঠিক সোর্টিং অ্যালগরিদম ব্যবহার করার মাধ্যমে আপনার কোডের পারফরম্যান্স এবং স্কেলেবিলিটি উন্নত করা যেতে পারে, বিশেষ করে যখন বড় ডেটাসেট নিয়ে কাজ করতে হয়।

গুয়াভা লাইব্রেরির মাধ্যমে সোর্টিং

গুয়াভা কিছু প্রাক-নির্ধারিত এবং কাস্টমাইজড সোর্টিং অপশন প্রদান করে যা Java Collections এর সাথে যুক্ত হতে পারে। গুয়াভার Ordering ক্লাসটি মূলত এসব সর্তিং অপারেশন সরবরাহ করে। Ordering ক্লাসটির ব্যবহার Java Collections (যেমন List, Set, Map ইত্যাদি) সোর্ট করার জন্য সুবিধাজনক।

Ordering ক্লাস

গুয়াভা লাইব্রেরিতে Ordering ক্লাসের সাহায্যে আপনি অ্যাবস্ট্রাক্ট কম্প্যারেটর তৈরি করতে পারেন যা আপনার ডেটা সহজেই সোর্ট করতে সক্ষম হবে। এটি Comparable অথবা Comparator ইন্টারফেস ব্যবহার করে কাজ করে।

ব্যবহার

Ordering ক্লাসটি ব্যবহার করে সোর্টিংয়ের সবচেয়ে সাধারণ পদ্ধতিটি হল:

  1. অর্ডারিং অ্যাবজেক্ট তৈরি করা
  2. কম্প্যারেটর ব্যবহার করা
  3. সোর্ট করা

এখানে Ordering ক্লাসের কিছু জনপ্রিয় মেথড আছে, যা সঠিকভাবে সোর্ট করতে সাহায্য করে।

1. সোজা সোজা সোর্টিং (Natural Sorting)

গুয়াভা Ordering.natural() মেথডের মাধ্যমে আপনি একটি সোজা (natural) সোর্ট করতে পারেন, যা Comparable ইন্টারফেসকে অনুসরণ করে।

উদাহরণ

import com.google.common.collect.Ordering;
import java.util.List;
import java.util.Arrays;

public class GuavaSortingExample {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(5, 1, 3, 8, 2, 7);
        
        // Natural Ordering ব্যবহার
        List<Integer> sortedNumbers = Ordering.natural().sortedCopy(numbers);
        System.out.println("Sorted List: " + sortedNumbers);
    }
}

এখানে, Ordering.natural() Comparable ইনটারফেস অনুসরণ করে সঠিকভাবে Integer উপাদানগুলো সজ্জিত করে।

2. কাস্টম সোর্টিং (Custom Sorting)

আপনি যদি কোনও নির্দিষ্ট শর্ত অনুযায়ী সজ্জিত করতে চান, তবে Ordering.from() ব্যবহার করে একটি কাস্টম কম্প্যারেটর তৈরি করা যেতে পারে। এটি আপনাকে ডেটা সজ্জিত করতে আরও নির্দিষ্ট নিয়ম প্রদান করবে।

উদাহরণ

import com.google.common.collect.Ordering;
import java.util.List;
import java.util.Arrays;

public class GuavaCustomSortingExample {
    public static void main(String[] args) {
        List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "Dave");

        // কাস্টম সোর্টিং: নামের দৈর্ঘ্য অনুযায়ী সজ্জিত করা
        List<String> sortedNames = Ordering.natural().onResultOf(String::length).sortedCopy(names);
        System.out.println("Sorted by Length: " + sortedNames);
    }
}

এখানে, Ordering.natural().onResultOf() ব্যবহার করা হয়েছে, যা স্ট্রিংয়ের দৈর্ঘ্য অনুযায়ী সজ্জিত করে।

3. সেড (Reverse) সোর্টিং

কখনও কখনও ডেটা রিভার্স অর্ডারে সজ্জিত করার প্রয়োজন পড়ে। গুয়াভা Ordering.reverse() মেথড ব্যবহার করে আপনি সোজা সোজা সজ্জিত একটি লিস্টকে উল্টো (reverse) সজ্জিত করতে পারেন।

উদাহরণ

import com.google.common.collect.Ordering;
import java.util.List;
import java.util.Arrays;

public class GuavaReverseSortingExample {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(5, 1, 3, 8, 2, 7);
        
        // Reverse Ordering ব্যবহার
        List<Integer> reverseSortedNumbers = Ordering.natural().reverse().sortedCopy(numbers);
        System.out.println("Reverse Sorted List: " + reverseSortedNumbers);
    }
}

এখানে, Ordering.natural().reverse() ব্যবহার করে সোজা সজ্জিত লিস্টকে উল্টো সজ্জিত করা হয়েছে।

4. Complex Sorting (Multiple Criteria)

কখনও কখনও আপনি একটি বা একাধিক শর্ত অনুসারে সজ্জিত করতে চান, যেমন প্রথমে একটি শর্ত, তারপর দ্বিতীয় শর্ত। এই ধরনের সোর্টিংয়ে Ordering.compound() ব্যবহার করা যেতে পারে।

উদাহরণ

import com.google.common.collect.Ordering;
import java.util.List;
import java.util.Arrays;

public class GuavaCompoundSortingExample {
    public static void main(String[] args) {
        List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "Bob", "Dave");
        
        // প্রথমে নামের অ্যালফাবেটিক অর্ডার, তারপর দৈর্ঘ্য অনুসারে সজ্জিত করা
        List<String> sortedNames = Ordering.natural()
                                          .compound(Ordering.natural().onResultOf(String::length))
                                          .sortedCopy(names);
        System.out.println("Sorted by Name and Length: " + sortedNames);
    }
}

এখানে, প্রথমে নামের অ্যালফাবেটিক সজ্জিত এবং তারপর দৈর্ঘ্যের ভিত্তিতে সজ্জিত করা হয়েছে।

5. Sorting with Null Values

গুয়াভা Ordering.nullsFirst() এবং Ordering.nullsLast() মেথডগুলি ব্যবহার করে আপনি সবার আগে বা পরে নাল মানগুলিকে রাখতে পারেন।

উদাহরণ

import com.google.common.collect.Ordering;
import java.util.List;
import java.util.Arrays;

public class GuavaNullSortingExample {
    public static void main(String[] args) {
        List<String> names = Arrays.asList("Alice", null, "Charlie", "Bob", null);
        
        // Null values will appear first
        List<String> sortedNames = Ordering.natural()
                                          .nullsFirst()
                                          .sortedCopy(names);
        System.out.println("Sorted with Nulls First: " + sortedNames);
    }
}

এখানে, Ordering.nullsFirst() ব্যবহার করে নাল মানগুলো প্রথমে সজ্জিত করা হয়েছে।


সারাংশ

গুয়াভা Ordering ক্লাসটি Java Collections এর জন্য অত্যন্ত শক্তিশালী এবং দক্ষ সোর্টিং টেকনিক প্রদান করে। আপনি সোজা সোজা সজ্জিত করতে, কাস্টম সজ্জা তৈরি করতে, সোজা এবং উল্টো সজ্জিত করতে এবং একাধিক শর্তে সজ্জিত করতে এই ক্লাসটি ব্যবহার করতে পারেন। সঠিক সোর্টিং পদ্ধতির ব্যবহার আপনার কোডের কার্যকারিতা এবং কার্যক্ষমতা উন্নত করতে সাহায্য করবে, বিশেষ করে যখন আপনি বড় ডেটাসেট নিয়ে কাজ করেন।

Content added By
Promotion

Are you sure to start over?

Loading...