Java Records (Java 14 এ প্রবর্তিত) হলো এমন একটি ফিচার যা Immutable Data Classes তৈরি করতে সাহায্য করে। এটি ছোট এবং সহজ ডেটা-ক্যারিয়ার ক্লাস তৈরি করার জন্য ব্যবহার করা হয়। Tuples এর মতো, Records বিভিন্ন ডেটা টাইপ একত্রে সংরক্ষণ করতে পারে। তবে Records আরও বেশি সুবিধা প্রদান করে যেমন: Named Fields এবং Type Safety।
Java Records এবং Tuples এর মধ্যে পার্থক্য
| বিষয় | Tuple | Record |
|---|---|---|
| প্রচলিত ধারা | Java এ নেই, লাইব্রেরি বা Custom ক্লাস ব্যবহার করতে হয়। | Java 14 এবং পরবর্তী সংস্করণে সমর্থিত। |
| Field Names | সাধারণত _1, _2 এর মতো ডেটা অ্যাক্সেস করা হয়। | নামসহ ডেটা ফিল্ড থাকে (e.g., name, age)। |
| Readability | কম পড়ার যোগ্য, বিশেষ করে Nested Tuples। | আরও বেশি পড়ার যোগ্য। |
| Type Safety | Generics দিয়ে Type Safety নিশ্চিত করা হয়। | Built-in Type Safety। |
| Usage | Lightweight এবং সাধারণ ডেটা পাসিং এর জন্য। | Data-Centric Class Design এর জন্য। |
Java Record দিয়ে Tuple তৈরি করা
১. Record দিয়ে Simple Tuple তৈরি
কোড উদাহরণ:
public record Tuple<T1, T2>(T1 first, T2 second) {}
ব্যবহার:
public class RecordTupleExample {
public static void main(String[] args) {
// String এবং Integer মান সংরক্ষণ
Tuple<String, Integer> person = new Tuple<>("Alice", 25);
// ডেটা অ্যাক্সেস
System.out.println("Name: " + person.first());
System.out.println("Age: " + person.second());
}
}
আউটপুট:
Name: Alice
Age: 25
২. Record দিয়ে Nested Tuple তৈরি
Record Definition:
public record Tuple3<T1, T2, T3>(T1 first, T2 second, T3 third) {}
ব্যবহার:
public class NestedRecordTupleExample {
public static void main(String[] args) {
// Nested Record তৈরি
Tuple3<String, Integer, Tuple<String, Double>> employee =
new Tuple3<>("Bob", 30, new Tuple<>("Manager", 75000.0));
// Nested Data Access
System.out.println("Name: " + employee.first());
System.out.println("Age: " + employee.second());
System.out.println("Role: " + employee.third().first());
System.out.println("Salary: $" + employee.third().second());
}
}
আউটপুট:
Name: Bob
Age: 30
Role: Manager
Salary: $75000.0
Records ব্যবহার করে Tuples এর সুবিধা
- Named Fields:
- ডেটা অ্যাক্সেসে
_1,_2এর পরিবর্তেname,ageএর মতো নাম ব্যবহার করা যায়।
- ডেটা অ্যাক্সেসে
- Immutability:
- Records Immutable হওয়ায় মাল্টিথ্রেডিংয়ে ডেটা সুরক্ষিত থাকে।
- Built-in Features:
equals(),hashCode(), এবংtoString()মেথড স্বয়ংক্রিয়ভাবে তৈরি হয়।
- Type Safety:
- ডেটা টাইপ কম্পাইল টাইমে যাচাই করা হয়।
- Readable Code:
- Record ব্যবহার করলে কোড আরো সহজবোধ্য এবং বোধগম্য হয়।
Records ব্যবহার করে Practical উদাহরণ
১. Data Deduplication
import java.util.HashSet;
import java.util.Set;
public record Employee(String name, int age, String department) {}
public class DeduplicationExample {
public static void main(String[] args) {
// Employee Records
Employee emp1 = new Employee("Alice", 25, "HR");
Employee emp2 = new Employee("Bob", 30, "IT");
Employee emp3 = new Employee("Alice", 25, "HR"); // Duplicate
// Deduplication using Set
Set<Employee> employees = new HashSet<>();
employees.add(emp1);
employees.add(emp2);
employees.add(emp3);
// Unique Employees
employees.forEach(System.out::println);
}
}
আউটপুট:
Employee[name=Alice, age=25, department=HR]
Employee[name=Bob, age=30, department=IT]
২. Lookup Table with Records
import java.util.HashMap;
import java.util.Map;
public record Product(String name, double price, int stock) {}
public class RecordLookupExample {
public static void main(String[] args) {
// Create a Lookup Table
Map<String, Product> productTable = new HashMap<>();
productTable.put("Laptop", new Product("Laptop", 999.99, 10));
productTable.put("Smartphone", new Product("Smartphone", 499.99, 20));
// Lookup a Product
String productName = "Laptop";
Product product = productTable.get(productName);
if (product != null) {
System.out.println("Name: " + product.name());
System.out.println("Price: $" + product.price());
System.out.println("Stock: " + product.stock());
} else {
System.out.println("Product not found.");
}
}
}
আউটপুট:
Name: Laptop
Price: $999.99
Stock: 10
Java Records এবং Tuples এর মধ্যে গুরুত্বপূর্ণ পার্থক্য:
- Tuples: Lightweight, নামবিহীন ডেটা সংরক্ষণের জন্য উপযুক্ত।
- Records: Named fields, Type-Safe, এবং Immutable Data Classes তৈরিতে কার্যকর।
কখন কী ব্যবহার করবেন:
- Tuples: সাময়িক ডেটা সংরক্ষণ এবং মাল্টিপল রিটার্ন ভ্যালু ক্ষেত্রে।
- Records: জটিল এবং নামযুক্ত ডেটা মডেল তৈরি করার জন্য।
Java 14 এর Records ব্যবহার করে Tuples তৈরি করা আপনার কোডকে আরো নিরাপদ এবং পড়তে সহজ করে তোলে।
Content added By
Read more