Tuples এর Sorting এবং Ordering

Tuples এর Equality এবং Hashing - জাভা টাপল (Java Tuples) - Java Technologies

382

Tuples একটি ডেটা স্ট্রাকচার যা একাধিক ডেটা টাইপের মান একত্রে ধরে রাখতে পারে। Tuples সাধারণত Immutable হয়। যদিও Javatuples লাইব্রেরি সরাসরি Sorting এর জন্য কোনো বিল্ট-ইন মেথড সরবরাহ করে না, তবে আমরা Comparator, Streams, অথবা Custom Logic ব্যবহার করে Tuples Sorting এবং Ordering করতে পারি।


Tuples Sorting এবং Ordering এর সাধারণ পদ্ধতি

১. Comparable এবং Comparator ইন্টারফেস ব্যবহার

  • Comparable: Tuples এর মান সরাসরি তুলনা করার জন্য।
  • Comparator: কাস্টম ক্রাইটেরিয়ার ভিত্তিতে Tuples তুলনা করার জন্য।

২. Java Streams ব্যবহার করে Sorting

  • স্ট্রিমের sorted() মেথড ব্যবহার করে Tuples সহজে সাজানো যায়।

৩. কাস্টম লজিক ব্যবহার

  • নির্দিষ্ট শর্তের ভিত্তিতে Tuples ম্যানুয়ালি সাজানো।

Tuples Sorting এর উদাহরণ

১. Simple Sorting: Pair এর উপর ভিত্তি করে

import org.javatuples.Pair;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

public class TupleSortingExample {
    public static void main(String[] args) {
        List<Pair<String, Integer>> pairs = new ArrayList<>();
        pairs.add(Pair.with("Alice", 30));
        pairs.add(Pair.with("Bob", 25));
        pairs.add(Pair.with("Charlie", 35));

        // বয়স অনুযায়ী Sorting (Ascending Order)
        pairs.sort(Comparator.comparing(Pair::getValue1));

        System.out.println("Sorted by Age:");
        pairs.forEach(System.out::println);

        // নাম অনুযায়ী Sorting (Alphabetical Order)
        pairs.sort(Comparator.comparing(Pair::getValue0));

        System.out.println("Sorted by Name:");
        pairs.forEach(System.out::println);
    }
}

আউটপুট:

Sorted by Age:
[Bob, 25]
[Alice, 30]
[Charlie, 35]

Sorted by Name:
[Alice, 30]
[Bob, 25]
[Charlie, 35]

২. Sorting with Triplet

import org.javatuples.Triplet;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

public class TripletSortingExample {
    public static void main(String[] args) {
        List<Triplet<String, String, Double>> products = new ArrayList<>();
        products.add(Triplet.with("Laptop", "Electronics", 799.99));
        products.add(Triplet.with("Smartphone", "Electronics", 699.99));
        products.add(Triplet.with("Refrigerator", "Appliances", 1200.50));

        // দাম অনুযায়ী Sorting (Ascending Order)
        products.sort(Comparator.comparing(Triplet::getValue2));

        System.out.println("Sorted by Price:");
        products.forEach(System.out::println);

        // ক্যাটেগরি অনুযায়ী Sorting (Alphabetical Order)
        products.sort(Comparator.comparing(Triplet::getValue1));

        System.out.println("Sorted by Category:");
        products.forEach(System.out::println);
    }
}

আউটপুট:

Sorted by Price:
[Smartphone, Electronics, 699.99]
[Laptop, Electronics, 799.99]
[Refrigerator, Appliances, 1200.5]

Sorted by Category:
[Refrigerator, Appliances, 1200.5]
[Laptop, Electronics, 799.99]
[Smartphone, Electronics, 699.99]

৩. Sorting Nested Tuples

import org.javatuples.Pair;
import org.javatuples.Triplet;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

public class NestedTupleSortingExample {
    public static void main(String[] args) {
        List<Pair<String, Triplet<String, Integer, Double>>> data = new ArrayList<>();
        data.add(Pair.with("Alice", Triplet.with("Physics", 85, 92.5)));
        data.add(Pair.with("Bob", Triplet.with("Chemistry", 78, 89.0)));
        data.add(Pair.with("Charlie", Triplet.with("Mathematics", 90, 95.5)));

        // স্কোর অনুযায়ী Sorting (Descending Order)
        data.sort(Comparator.comparing((Pair<String, Triplet<String, Integer, Double>> p) -> p.getValue1().getValue2()).reversed());

        System.out.println("Sorted by Score:");
        data.forEach(System.out::println);
    }
}

আউটপুট:

Sorted by Score:
[Charlie, [Mathematics, 90, 95.5]]
[Alice, [Physics, 85, 92.5]]
[Bob, [Chemistry, 78, 89.0]]

Java Streams ব্যবহার করে Sorting

Streams এর মাধ্যমে Pair Sorting

import org.javatuples.Pair;

import java.util.ArrayList;
import java.util.List;

public class StreamSortingExample {
    public static void main(String[] args) {
        List<Pair<String, Integer>> pairs = new ArrayList<>();
        pairs.add(Pair.with("Alice", 30));
        pairs.add(Pair.with("Bob", 25));
        pairs.add(Pair.with("Charlie", 35));

        // স্ট্রিম ব্যবহার করে Sorting
        pairs.stream()
                .sorted((p1, p2) -> p1.getValue1().compareTo(p2.getValue1()))
                .forEach(System.out::println);
    }
}

Custom Logic ব্যবহার করে Sorting

কাস্টম কম্পারেটর তৈরি করে Sorting

import org.javatuples.Triplet;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

public class CustomComparatorExample {
    public static void main(String[] args) {
        List<Triplet<String, String, Double>> products = new ArrayList<>();
        products.add(Triplet.with("Laptop", "Electronics", 799.99));
        products.add(Triplet.with("Smartphone", "Electronics", 699.99));
        products.add(Triplet.with("Refrigerator", "Appliances", 1200.50));

        // কাস্টম কম্পারেটর
        Comparator<Triplet<String, String, Double>> customComparator = (t1, t2) -> {
            int categoryCompare = t1.getValue1().compareTo(t2.getValue1());
            if (categoryCompare != 0) {
                return categoryCompare; // ক্যাটেগরি অনুসারে
            }
            return t1.getValue2().compareTo(t2.getValue2()); // তারপর দাম অনুসারে
        };

        products.sort(customComparator);

        System.out.println("Custom Sorted Products:");
        products.forEach(System.out::println);
    }
}

আউটপুট:

Custom Sorted Products:
[Refrigerator, Appliances, 1200.5]
[Smartphone, Electronics, 699.99]
[Laptop, Electronics, 799.99]

Tuples Sorting এবং Ordering এর সুবিধা

  1. ফ্লেক্সিবিলিটি: বিভিন্ন ধরণের Tuples সহজে সাজানো যায়।
  2. Custom Logic Support: নির্দিষ্ট শর্তের উপর ভিত্তি করে Sorting করা যায়।
  3. Streams Integration: জাভার স্ট্রিম API Tuples Sorting কে আরও সহজ করে তোলে।
  4. Nested Data Handling: Nested Tuples এর ডেটা সহজে সাজানো যায়।

Javatuples ব্যবহার করে Tuples Sorting এবং Ordering খুবই কার্যকর এবং সহজ। Comparable, Comparator, এবং Streams এর মাধ্যমে Tuples সাজানো যায়। Nested Tuples এর Sorting কাস্টম লজিক ব্যবহার করে সহজে বাস্তবায়ন করা যায়। এটি জাভার ডেটা ম্যানেজমেন্ট সিস্টেমে একটি শক্তিশালী সমাধান প্রদান করে।

Content added By
Promotion

Are you sure to start over?

Loading...