টাপল (Tuple) হলো একটি ডেটা স্ট্রাকচার যা একাধিক মানকে একটি সিঙ্গেল অবজেক্ট হিসেবে সংরক্ষণ করতে দেয়। জাভাতে টাপল সরাসরি বিল্ট-ইন নেই, তবে আমরা তৃতীয়-পক্ষ লাইব্রেরি (যেমন Vavr, Apache Commons Lang) বা কাস্টম ক্লাস ব্যবহার করে এটি ব্যবহার করতে পারি।
টাপল কি?
একটি টাপল হলো একাধিক বিভিন্ন ধরনের মানের সেট, যা একটি অবজেক্ট হিসেবে গ্রুপ করা হয়। এটি সাধারণত স্থির আকারের এবং একটি সুনির্দিষ্ট ক্রমে উপাদান সংরক্ষণ করে।
উদাহরণ:
Pair(2 মান)Triplet(3 মান)Quadruplet(4 মান)
টাপল কেন ব্যবহার করা হয়?
- একাধিক রিটার্ন ভ্যালু:
- একটি মেথড থেকে একাধিক মান রিটার্ন করার জন্য।
- আকস্মিক ডেটা গ্রুপিং:
- সম্পর্কিত ডেটা দ্রুত গ্রুপ করার জন্য।
- প্রাথমিক প্রোটোটাইপিং:
- কমপ্লেক্স ডেটা স্ট্রাকচার তৈরি করার আগে সহজ স্ট্রাকচার হিসেবে।
- টাইপ সেফটি:
- জাভার জেনেরিক টাইপিং ব্যবহার করে টাপল টাইপ সেফ।
জাভাতে টাপল কিভাবে কাজ করে?
১. কাস্টম টাপল ক্লাস
public class Tuple<L, R> {
private final L left;
private final R right;
public Tuple(L left, R right) {
this.left = left;
this.right = right;
}
public L getLeft() {
return left;
}
public R getRight() {
return right;
}
@Override
public String toString() {
return "(" + left + ", " + right + ")";
}
}
public class Main {
public static void main(String[] args) {
Tuple<String, Integer> tuple = new Tuple<>("Age", 25);
System.out.println("Left: " + tuple.getLeft());
System.out.println("Right: " + tuple.getRight());
}
}
আউটপুট:
Left: Age
Right: 25
২. Vavr লাইব্রেরি ব্যবহার করে টাপল
Vavr একটি জনপ্রিয় লাইব্রেরি যা টাপল সরাসরি সমর্থন করে।
Dependency:
<dependency>
<groupId>io.vavr</groupId>
<artifactId>vavr</artifactId>
<version>0.10.4</version>
</dependency>
কোড উদাহরণ:
import io.vavr.Tuple;
import io.vavr.Tuple2;
public class Main {
public static void main(String[] args) {
Tuple2<String, Integer> tuple = Tuple.of("John", 30);
System.out.println("Name: " + tuple._1);
System.out.println("Age: " + tuple._2);
}
}
আউটপুট:
Name: John
Age: 30
৩. Apache Commons Lang লাইব্রেরি ব্যবহার করে টাপল
Apache Commons Lang-এ Pair ক্লাস সরাসরি ব্যবহার করা যায়।
Dependency:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
কোড উদাহরণ:
import org.apache.commons.lang3.tuple.Pair;
public class Main {
public static void main(String[] args) {
Pair<String, Integer> pair = Pair.of("Height", 180);
System.out.println("Key: " + pair.getLeft());
System.out.println("Value: " + pair.getRight());
}
}
আউটপুট:
Key: Height
Value: 180
টাপল ব্যবহারের সুবিধা
- একাধিক মান হ্যান্ডল করা সহজ:
- মেথড থেকে একাধিক মান ফেরত পাঠানোর ক্ষেত্রে কার্যকর।
- টাইপ সেফ এবং জেনেরিক:
- নির্দিষ্ট টাইপ সংরক্ষণ করে, টাইপ সেফটি নিশ্চিত করে।
- সহজ এবং দ্রুত:
- কমপ্লেক্স ডেটা স্ট্রাকচার তৈরি না করে সহজ ডেটা গ্রুপিংয়ের জন্য।
- রিড-অনলি ডেটা:
- সাধারণত Immutable হয়, যা কনকারেন্সি সমস্যা প্রতিরোধ করে।
কিছু গুরুত্বপূর্ণ টাপল উদাহরণ
১. একাধিক রিটার্ন ভ্যালু
import io.vavr.Tuple;
import io.vavr.Tuple2;
public class Main {
public static Tuple2<Integer, Integer> calculate(int a, int b) {
return Tuple.of(a + b, a * b);
}
public static void main(String[] args) {
Tuple2<Integer, Integer> result = calculate(5, 10);
System.out.println("Sum: " + result._1);
System.out.println("Product: " + result._2);
}
}
২. টাপল লিস্ট হিসাবে সংরক্ষণ
import io.vavr.Tuple;
import io.vavr.Tuple2;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Tuple2<String, Integer>> students = List.of(
Tuple.of("Alice", 90),
Tuple.of("Bob", 85),
Tuple.of("Charlie", 92)
);
for (Tuple2<String, Integer> student : students) {
System.out.println("Name: " + student._1 + ", Score: " + student._2);
}
}
}
Java Tuples হলো একাধিক মান সংরক্ষণের একটি কার্যকর ডেটা স্ট্রাকচার। এটি:
- একাধিক রিটার্ন ভ্যালু ব্যবস্থাপনায় সহজ।
- কমপ্লেক্স ডেটা স্ট্রাকচারের বিকল্প।
- ইমিউটেবল এবং টাইপ সেফ।
Vavr বা Apache Commons Lang লাইব্রেরি ব্যবহার করে টাপল প্রয়োগ করা যায়। কাস্টম ক্লাস তৈরি করেও টাপল ব্যবহার করা সম্ভব।
Read more