Java 8-এর Advanced Features (যেমন Streams, Lambda Expressions, এবং Method References) ব্যবহার করে Tuples আরও কার্যকরভাবে পরিচালনা করা যায়। Javatuples এর Immutable এবং Type-Safe বৈশিষ্ট্যগুলির সঙ্গে Java 8-এর ফিচার একত্রিত করে উন্নত ডেটা প্রসেসিং সহজ হয়।
Java 8 এবং Tuples এর ফিচার সমন্বয়
১. Lambda Expressions এবং Tuples
Lambda Expressions ব্যবহার করে Tuples এর ডেটা প্রসেসিং এবং ফিল্টারিং করা যায়।
উদাহরণ:
import org.javatuples.Pair;
import java.util.ArrayList;
import java.util.List;
public class LambdaWithTuple {
public static void main(String[] args) {
List<Pair<String, Integer>> people = new ArrayList<>();
people.add(Pair.with("Alice", 30));
people.add(Pair.with("Bob", 25));
people.add(Pair.with("Charlie", 35));
// ফিল্টার: শুধু তাদের দেখান যাদের বয়স ৩০ বা তার বেশি
people.stream()
.filter(person -> person.getValue1() >= 30)
.forEach(System.out::println);
}
}
আউটপুট:
[Alice, 30]
[Charlie, 35]
২. Streams এবং Tuples
Streams API ব্যবহার করে Tuples এর উপর Sorting, Mapping, এবং Collecting পরিচালনা করা যায়।
Sorting এবং Collecting উদাহরণ:
import org.javatuples.Pair;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class StreamWithTuple {
public static void main(String[] args) {
List<Pair<String, Integer>> people = new ArrayList<>();
people.add(Pair.with("Alice", 30));
people.add(Pair.with("Bob", 25));
people.add(Pair.with("Charlie", 35));
// বয়স অনুযায়ী সাজান এবং সংগ্রহ করুন
List<Pair<String, Integer>> sortedPeople = people.stream()
.sorted((p1, p2) -> p1.getValue1().compareTo(p2.getValue1()))
.collect(Collectors.toList());
sortedPeople.forEach(System.out::println);
}
}
আউটপুট:
[Bob, 25]
[Alice, 30]
[Charlie, 35]
৩. Method References এবং Tuples
Method References ব্যবহার করে Tuples এর ডেটা প্রসেসিংকে আরো সংক্ষিপ্ত এবং পরিষ্কার করা যায়।
উদাহরণ:
import org.javatuples.Pair;
import java.util.ArrayList;
import java.util.List;
public class MethodReferenceWithTuple {
public static void main(String[] args) {
List<Pair<String, Integer>> people = new ArrayList<>();
people.add(Pair.with("Alice", 30));
people.add(Pair.with("Bob", 25));
people.add(Pair.with("Charlie", 35));
// Method Reference ব্যবহার করে Tuple প্রিন্ট করা
people.forEach(System.out::println);
}
}
আউটপুট:
[Alice, 30]
[Bob, 25]
[Charlie, 35]
৪. Map এবং Reduce এর মাধ্যমে Tuples প্রক্রিয়াকরণ
Map এবং Reduce ব্যবহার করে Tuples এর উপর জটিল গণনা করা যায়।
উদাহরণ: Tuples এর গড় বয়স নির্ণয় করা
import org.javatuples.Pair;
import java.util.ArrayList;
import java.util.List;
public class MapReduceWithTuple {
public static void main(String[] args) {
List<Pair<String, Integer>> people = new ArrayList<>();
people.add(Pair.with("Alice", 30));
people.add(Pair.with("Bob", 25));
people.add(Pair.with("Charlie", 35));
// গড় বয়স নির্ণয়
double averageAge = people.stream()
.mapToInt(Pair::getValue1)
.average()
.orElse(0);
System.out.println("Average Age: " + averageAge);
}
}
আউটপুট:
Average Age: 30.0
৫. Nested Tuples এবং Streams
Nested Tuples ব্যবহার করে জটিল ডেটা গঠন পরিচালনা করা যায়।
উদাহরণ: Nested Tuples এর ফিল্টারিং
import org.javatuples.Pair;
import org.javatuples.Triplet;
import java.util.ArrayList;
import java.util.List;
public class NestedTupleWithStream {
public static void main(String[] args) {
List<Pair<String, Triplet<String, Integer, Double>>> data = new ArrayList<>();
data.add(Pair.with("Alice", Triplet.with("Math", 90, 95.5)));
data.add(Pair.with("Bob", Triplet.with("Science", 80, 85.0)));
data.add(Pair.with("Charlie", Triplet.with("English", 85, 88.0)));
// ফিল্টার: ৮৫ এর উপরে স্কোর যাদের আছে তাদের দেখান
data.stream()
.filter(entry -> entry.getValue1().getValue1() > 85)
.forEach(System.out::println);
}
}
আউটপুট:
[Alice, [Math, 90, 95.5]]
[Charlie, [English, 85, 88.0]]
Tuples এবং Java 8 Features এর সুবিধা
- সহজ ডেটা ম্যানিপুলেশন:
- Streams এবং Lambda ব্যবহার করে Tuples এর ডেটা প্রসেসিং সহজ হয়।
- সংক্ষিপ্ত কোড:
- Method References এবং Functional Programming Tuples এর ব্যবহারে কোড সংক্ষিপ্ত করে।
- জটিল ডেটা পরিচালনা:
- Nested Tuples এর মাধ্যমে জটিল ডেটা সহজে ফিল্টারিং এবং প্রসেসিং করা যায়।
- Custom Logic:
- Tuples এর Sorting, Mapping, এবং Filtering এর জন্য কাস্টম লজিক সহজে প্রয়োগ করা যায়।
Java Tuples এবং Java 8 এর Streams, Lambda Expressions, এবং Method References একত্রে ব্যবহার করে উন্নত ডেটা ম্যানিপুলেশন এবং প্রসেসিং সম্ভব। Nested Tuples পরিচালনা থেকে শুরু করে জটিল গণনা পর্যন্ত সবকিছু Java 8 ফিচার দ্বারা সহজে বাস্তবায়ন করা যায়। Tuples এর Immutable এবং Type-Safe বৈশিষ্ট্য Java 8 এর আধুনিক কনসেপ্টের সঙ্গে মিলে একটি শক্তিশালী সমাধান প্রদান করে।
Read more