Java তে Tuples এর জন্য কোন Built-in সমর্থন নেই

Java তে Tuple Libraries - জাভা টাপল (Java Tuples) - Java Technologies

384

Java Tuples হলো এমন একটি ডেটা স্ট্রাকচার যা বিভিন্ন ডেটা টাইপের একাধিক মান একত্রে সংরক্ষণ করতে পারে। তবে, Java-তে Tuples এর জন্য কোনো Built-in Support নেই। এই সীমাবদ্ধতাকে কাটিয়ে উঠতে ডেভেলপাররা তৃতীয় পক্ষের লাইব্রেরি বা কাস্টম সমাধান ব্যবহার করে।


Java তে Tuples কেন Built-in নেই?

  1. অবজেক্ট-ওরিয়েন্টেড ডিজাইন: Java-তে Tuples এর পরিবর্তে POJO (Plain Old Java Object) বা Record ব্যবহার উৎসাহিত করা হয়।
  2. নামহীন ডেটা: Tuples-এর মানগুলি সাধারণত নামবিহীন থাকে (_1, _2 ইত্যাদি), যা কোডের রিডেবিলিটি কমায়।
  3. ডেটা টাইপের ক্লারিটি: POJO বা Record ব্যবহার করলে ডেটার টাইপ এবং উদ্দেশ্য স্পষ্ট হয়।

Tuples ব্যবহারের জন্য সমাধান

১. Custom POJO ব্যবহার করা

Tuples-এর পরিবর্তে একটি কাস্টম ক্লাস তৈরি করে স্পষ্ট এবং রিডেবল সমাধান তৈরি করা যায়।

Example:

class Person {
    private final String name;
    private final int age;

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

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

public class PojoExample {
    public static void main(String[] args) {
        Person person = new Person("Alice", 30);
        System.out.println("Name: " + person.getName());
        System.out.println("Age: " + person.getAge());
    }
}

২. Record ব্যবহার করা (Java 14+)

Java 14 থেকে Record ব্যবহার করা যায়, যা Tuples-এর জন্য কার্যকর সমাধান।

Example:

public record Person(String name, int age) {}

public class RecordExample {
    public static void main(String[] args) {
        Person person = new Person("Alice", 30);
        System.out.println("Name: " + person.name());
        System.out.println("Age: " + person.age());
    }
}

৩. Third-Party Libraries ব্যবহার করা

তৃতীয় পক্ষের লাইব্রেরি (যেমন Vavr, Apache Commons Lang, Javatuples) ব্যবহার করে Tuples তৈরি করা যায়।

a. Apache Commons Lang

Dependency:

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.12.0</version>
</dependency>

Example:

import org.apache.commons.lang3.tuple.Pair;

public class ApacheCommonsExample {
    public static void main(String[] args) {
        Pair<String, Integer> pair = Pair.of("Alice", 30);
        System.out.println("Name: " + pair.getLeft());
        System.out.println("Age: " + pair.getRight());
    }
}
b. Vavr Library

Dependency:

<dependency>
    <groupId>io.vavr</groupId>
    <artifactId>vavr</artifactId>
    <version>0.10.4</version>
</dependency>

Example:

import io.vavr.Tuple;
import io.vavr.Tuple2;

public class VavrExample {
    public static void main(String[] args) {
        Tuple2<String, Integer> tuple = Tuple.of("Alice", 30);
        System.out.println("Name: " + tuple._1);
        System.out.println("Age: " + tuple._2);
    }
}
c. Javatuples Library

Dependency:

<dependency>
    <groupId>org.javatuples</groupId>
    <artifactId>javatuples</artifactId>
    <version>1.2</version>
</dependency>

Example:

import org.javatuples.Pair;

public class JavatuplesExample {
    public static void main(String[] args) {
        Pair<String, Integer> pair = Pair.with("Alice", 30);
        System.out.println("Name: " + pair.getValue0());
        System.out.println("Age: " + pair.getValue1());
    }
}

Tuples vs POJO/Record

বৈশিষ্ট্যTuplesPOJO/Record
রিডেবিলিটি_1, _2 ইত্যাদি নামবিহীন ফিল্ড।ফিল্ড নামের কারণে বেশি রিডেবল।
কোডের সরলতাকম কোডে ব্যবহার করা যায়।কিছুটা বেশি কোড প্রয়োজন।
টাইপ সেফটিসাধারণত ভালো টাইপ সেফটি।পুরোপুরি টাইপ সেফ।
ইন্টেনশন স্পষ্টতাউদ্দেশ্য অস্পষ্ট হতে পারে।উদ্দেশ্য স্পষ্ট।
মডেলিংছোট কাজের জন্য উপযুক্ত।বড় এবং জটিল ডেটা মডেলিংয়ে কার্যকর।

Tuples এর ব্যবহার ক্ষেত্র

  1. মাল্টিপল রিটার্ন ভ্যালু: একটি মেথড থেকে একাধিক মান ফিরিয়ে দিতে।
  2. অস্থায়ী ডেটা গ্রুপিং: একাধিক ডেটা টাইপ সাময়িকভাবে সংরক্ষণ করতে।
  3. ক্লায়েন্ট-সার্ভার কমিউনিকেশন: বিভিন্ন ডেটা টাইপ একত্রে পাঠাতে।

যদিও Java-তে Tuples-এর জন্য Built-in Support নেই, তবুও বিভিন্ন তৃতীয় পক্ষের লাইব্রেরি বা কাস্টম সমাধান ব্যবহার করে Tuples ব্যবহার করা যায়।

  • ছোট কাজের জন্য: Vavr, Apache Commons, বা Javatuples ব্যবহার করুন।
  • বড় এবং জটিল কাজের জন্য: POJO বা Record ব্যবহার করা ভালো।

আপনার প্রয়োজন অনুযায়ী টুল বা কৌশল নির্বাচন করুন।

Content added By
Promotion

Are you sure to start over?

Loading...