Tuple হলো একটি ডেটা স্ট্রাকচার, যা বিভিন্ন ধরনের এবং বিভিন্ন সংখ্যার মান (values) একসঙ্গে প্যাকেজ করতে ব্যবহৃত হয়। এটি immutable এবং fixed-size কন্টেইনার, যা সাধারণত ডাটা একসাথে গোষ্ঠীভুক্ত করতে কাজে লাগে। যদিও Java 8 বা তার আগ পর্যন্ত বিল্ট-ইন Tuple সাপোর্ট ছিল না, তৃতীয় পক্ষের লাইব্রেরি (যেমন Apache Commons Lang, Vavr, বা JOOλ) ব্যবহার করে Tuples জাভাতে ব্যবহার করা যায়।
Tuple এর ব্যবহারযোগ্যতা
- একাধিক মান রিটার্ন করার জন্য।
- ভিন্ন ভিন্ন ধরনের ডেটা গোষ্ঠীভুক্ত করতে।
- ডেটা পাস করার সময় সিম্পল কন্টেইনার হিসেবে।
Java Tuples এর উদাহরণ
১. Tuple ব্যবহার করার জন্য Third-Party Library: Apache Commons Lang
Apache Commons Lang-এর Pair এবং Triple ক্লাস ব্যবহার করা হয় Tuples এর জন্য।
Pair Example:
import org.apache.commons.lang3.tuple.Pair;
public class TupleExample {
public static void main(String[] args) {
// একটি Pair তৈরি করুন
Pair<String, Integer> pair = Pair.of("Alice", 25);
// মান অ্যাক্সেস করুন
System.out.println("Name: " + pair.getLeft()); // Alice
System.out.println("Age: " + pair.getRight()); // 25
}
}
Triple Example:
import org.apache.commons.lang3.tuple.Triple;
public class TupleExample {
public static void main(String[] args) {
// একটি Triple তৈরি করুন
Triple<String, Integer, String> triple = Triple.of("Alice", 25, "Engineer");
// মান অ্যাক্সেস করুন
System.out.println("Name: " + triple.getLeft()); // Alice
System.out.println("Age: " + triple.getMiddle()); // 25
System.out.println("Profession: " + triple.getRight()); // Engineer
}
}
২. Tuple ব্যবহার করার জন্য Vavr Library
Vavr একটি আধুনিক লাইব্রেরি, যা Tuples এর আরও উন্নত ফিচার সরবরাহ করে।
Tuple Example (Vavr):
import io.vavr.Tuple;
import io.vavr.Tuple2;
public class TupleExample {
public static void main(String[] args) {
// একটি Tuple2 তৈরি করুন
Tuple2<String, Integer> tuple = Tuple.of("Alice", 25);
// মান অ্যাক্সেস করুন
System.out.println("Name: " + tuple._1); // Alice
System.out.println("Age: " + tuple._2); // 25
// মান পরিবর্তন করুন
Tuple2<String, Integer> updatedTuple = tuple.map1(name -> name + " Johnson");
System.out.println("Updated Name: " + updatedTuple._1); // Alice Johnson
}
}
Multi-Value Tuple Example (Vavr):
import io.vavr.Tuple;
import io.vavr.Tuple3;
public class MultiValueTuple {
public static void main(String[] args) {
// একটি Tuple3 তৈরি করুন
Tuple3<String, Integer, String> tuple = Tuple.of("Alice", 25, "Engineer");
// মান অ্যাক্সেস করুন
System.out.println("Name: " + tuple._1); // Alice
System.out.println("Age: " + tuple._2); // 25
System.out.println("Profession: " + tuple._3); // Engineer
}
}
৩. Tuple ব্যবহার করার জন্য JOOλ Library
JOOλ (jOOλ) লাইব্রেরি ব্যবহার করে Tuple তৈরি এবং পরিচালনা করা সহজ।
Example with Tuple2:
import org.jooq.lambda.tuple.Tuple2;
import static org.jooq.lambda.tuple.Tuple.tuple;
public class TupleExample {
public static void main(String[] args) {
// একটি Tuple2 তৈরি করুন
Tuple2<String, Integer> tuple = tuple("Alice", 25);
// মান অ্যাক্সেস করুন
System.out.println("Name: " + tuple.v1); // Alice
System.out.println("Age: " + tuple.v2); // 25
}
}
Tuples এর সাধারণ ব্যবহার
১. একাধিক মান রিটার্ন করা
Tuples একাধিক মান রিটার্ন করার জন্য একটি সহজ উপায়।
import org.apache.commons.lang3.tuple.Pair;
public class MultipleReturnExample {
public static Pair<Integer, String> getStudentDetails() {
return Pair.of(101, "Alice");
}
public static void main(String[] args) {
Pair<Integer, String> student = getStudentDetails();
System.out.println("ID: " + student.getLeft()); // 101
System.out.println("Name: " + student.getRight()); // Alice
}
}
২. ডেটা গোষ্ঠীভুক্ত করা
ভিন্ন ধরনের ডেটা গোষ্ঠীভুক্ত করে একটি অবজেক্ট তৈরি করতে।
import io.vavr.Tuple;
import io.vavr.Tuple3;
public class GroupedDataExample {
public static void main(String[] args) {
Tuple3<String, Integer, String> person = Tuple.of("Bob", 30, "Doctor");
System.out.println("Name: " + person._1); // Bob
System.out.println("Age: " + person._2); // 30
System.out.println("Profession: " + person._3); // Doctor
}
}
৩. Key-Value Pair হিসেবে ব্যবহৃত
Tuples Key-Value পেয়ারের বিকল্প হিসেবে ব্যবহৃত হতে পারে।
import org.apache.commons.lang3.tuple.Pair;
public class KeyValueExample {
public static void main(String[] args) {
Pair<String, Double> product = Pair.of("Laptop", 999.99);
System.out.println("Product: " + product.getLeft()); // Laptop
System.out.println("Price: $" + product.getRight()); // 999.99
}
}
৪. Immutable ডেটা মডেল
Tuples immutable, অর্থাৎ একবার তৈরি করার পর এটি পরিবর্তন করা যায় না। এটি ডেটার নিরাপত্তা নিশ্চিত করে।
Tuples এর সুবিধা
| সুবিধা | ব্যাখ্যা |
|---|---|
| মাল্টি-ভ্যালু রিটার্ন | মেথড একাধিক মান রিটার্ন করতে পারে। |
| ইম্যুটেবল স্ট্রাকচার | ডেটা নিরাপত্তা নিশ্চিত করে। |
| ডেটা গোষ্ঠীভুক্ত করা সহজ | ভিন্ন ধরনের ডেটা একত্রিত করে রাখা যায়। |
| বিল্ট-ইন লাইব্রেরি সমর্থন | Apache Commons Lang, Vavr, এবং JOOλ এর সমর্থন। |
জাভাতে Tuples ব্যবহার একাধিক মান রিটার্ন করা, ডেটা গোষ্ঠীভুক্ত করা এবং কোড সহজ এবং পরিষ্কার রাখতে সাহায্য করে। যদিও জাভায় বিল্ট-ইন Tuples সমর্থন নেই, তবে Apache Commons Lang, Vavr, এবং JOOλ এর মতো তৃতীয় পক্ষের লাইব্রেরি ব্যবহার করে Tuples ব্যবহার করা সহজ এবং কার্যকর।
Read more