Java তে Pair এবং Triplet হলো Tuple-এর দুইটি সাধারণ রূপ। এগুলো ডেটার দুটি বা তিনটি মান একসাথে সংরক্ষণ করতে ব্যবহৃত হয়। জাভার নিজস্ব Pair বা Triplet ক্লাস না থাকলেও Apache Commons Lang এবং Vavr লাইব্রেরি ব্যবহার করে সেগুলো সহজেই ইমপ্লিমেন্ট করা যায়।
Pair এবং Triplet কি?
- Pair: ডেটার দুটি মান সংরক্ষণ করে (Key-Value বা অন্য যে কোনো দুটি সংযুক্ত ডেটা)।
- Triplet: ডেটার তিনটি মান সংরক্ষণ করে।
Pair এবং Triplet এর ব্যবহার
১. Apache Commons Lang লাইব্রেরি ব্যবহার করে
Maven Dependency:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
Pair এর উদাহরণ:
import org.apache.commons.lang3.tuple.Pair;
public class PairExample {
public static void main(String[] args) {
// Pair তৈরি
Pair<String, Integer> student = Pair.of("Alice", 25);
// মানগুলি অ্যাক্সেস
System.out.println("Name: " + student.getLeft());
System.out.println("Age: " + student.getRight());
}
}
Triplet এর জন্য Custom Implementation: Apache Commons Lang সরাসরি Triplet প্রদান করে না। তবে এটি কাস্টম ক্লাস তৈরি করে ব্যবহার করা যায় বা অন্য লাইব্রেরি (যেমন Vavr) ব্যবহার করা যায়।
২. Vavr লাইব্রেরি ব্যবহার করে
Maven Dependency:
<dependency>
<groupId>io.vavr</groupId>
<artifactId>vavr</artifactId>
<version>0.10.4</version>
</dependency>
Pair এর উদাহরণ:
import io.vavr.Tuple;
import io.vavr.Tuple2;
public class PairExampleVavr {
public static void main(String[] args) {
// Pair তৈরি
Tuple2<String, Integer> student = Tuple.of("Bob", 22);
// মানগুলি অ্যাক্সেস
System.out.println("Name: " + student._1); // _1 -> প্রথম মান
System.out.println("Age: " + student._2); // _2 -> দ্বিতীয় মান
}
}
Triplet এর উদাহরণ:
import io.vavr.Tuple;
import io.vavr.Tuple3;
public class TripletExampleVavr {
public static void main(String[] args) {
// Triplet তৈরি
Tuple3<String, Integer, String> employee = Tuple.of("Charlie", 30, "Engineer");
// মানগুলি অ্যাক্সেস
System.out.println("Name: " + employee._1); // _1 -> প্রথম মান
System.out.println("Age: " + employee._2); // _2 -> দ্বিতীয় মান
System.out.println("Role: " + employee._3); // _3 -> তৃতীয় মান
}
}
৩. Custom Pair এবং Triplet Class তৈরি
Custom Pair Implementation:
class Pair<T1, T2> {
private final T1 first;
private final T2 second;
public Pair(T1 first, T2 second) {
this.first = first;
this.second = second;
}
public T1 getFirst() {
return first;
}
public T2 getSecond() {
return second;
}
}
public class CustomPairExample {
public static void main(String[] args) {
Pair<String, Integer> student = new Pair<>("David", 28);
System.out.println("Name: " + student.getFirst());
System.out.println("Age: " + student.getSecond());
}
}
Custom Triplet Implementation:
class Triplet<T1, T2, T3> {
private final T1 first;
private final T2 second;
private final T3 third;
public Triplet(T1 first, T2 second, T3 third) {
this.first = first;
this.second = second;
this.third = third;
}
public T1 getFirst() {
return first;
}
public T2 getSecond() {
return second;
}
public T3 getThird() {
return third;
}
}
public class CustomTripletExample {
public static void main(String[] args) {
Triplet<String, Integer, String> employee = new Triplet<>("Eve", 29, "Designer");
System.out.println("Name: " + employee.getFirst());
System.out.println("Age: " + employee.getSecond());
System.out.println("Role: " + employee.getThird());
}
}
Pair এবং Triplet এর ব্যবহার ক্ষেত্র
Key-Value Mapping: একটি ডেটার সাথে অন্য ডেটা সম্পর্কিতভাবে সংরক্ষণ করতে।
Pair<String, Double> product = Pair.of("Laptop", 850.50);Multiple Return Values: একটি মেথড একাধিক মান ফিরিয়ে দিতে।
public Pair<Integer, Integer> calculate(int a, int b) { return Pair.of(a + b, a * b); }Complex Data Passing: একাধিক ডেটা টাইপ একত্রে পাস করতে।
Tuple3<String, Integer, String> studentInfo = Tuple.of("Alice", 21, "Physics");- Lightweight Data Structure: হালকা ডেটা স্ট্রাকচার হিসেবে দ্রুত অ্যাক্সেস।
Pair এবং Triplet এর সুবিধা
- কমপ্যাক্ট: একাধিক মান সংরক্ষণের জন্য সহজ এবং হালকা সমাধান।
- Immutable: সাধারণত অপরিবর্তনীয় হয়, যা ডেটার নিরাপত্তা বাড়ায়।
- Reusability: জটিল ডেটা স্ট্রাকচারের চেয়ে পুনরায় ব্যবহারযোগ্য এবং সহজ।
Pair এবং Triplet এর সীমাবদ্ধতা
- Naming Issue: ডেটার জন্য নির্দিষ্ট নাম না থাকলে কোড কম বোধগম্য হতে পারে।
- উদাহরণ:
pair.getLeft()এর চেয়েperson.getName()পড়তে সহজ।
- উদাহরণ:
- Complex Data: জটিল ডেটা স্ট্রাকচারের জন্য
POJOক্লাস বেশি কার্যকর। - Java Standard Library Support: জাভার নিজস্ব
PairবাTripletসমর্থন নেই।
- Pair এবং Triplet সহজ ডেটা স্ট্রাকচারের জন্য খুবই কার্যকর।
- Apache Commons এবং Vavr লাইব্রেরি ব্যবহার করে সহজেই Tuples ব্যবহার করা যায়।
- বড় ডেটা স্ট্রাকচারের জন্য কাস্টম
POJOক্লাস তৈরি করা বেশি উপযোগী।
আপনার প্রয়োজন অনুযায়ী Tuples নির্বাচন করুন এবং ব্যবহার করুন।
Read more