Java 8 এর Lambda এবং Streams API এর সাথে Tuples এর Integration

Java 8+ এবং Tuples Integration - জাভা টাপল (Java Tuples) - Java Technologies

386

Java 8 এ Lambda Expressions এবং Streams API যোগ করার ফলে Tuples এর ব্যবহার আরও কার্যকর এবং সরল হয়েছে। Tuples এবং Streams API একত্রে ব্যবহার করে বিভিন্ন ডেটা প্রসেসিং টাস্ক দ্রুত এবং পরিষ্কারভাবে সম্পন্ন করা যায়।


Tuples এর সংক্ষিপ্ত ধারণা

Tuples হলো একাধিক ডেটা টাইপের মান একত্রে সংরক্ষণের একটি ডেটা স্ট্রাকচার। Tuples সাধারণত Vavr, Apache Commons Lang, বা Javatuples লাইব্রেরি ব্যবহার করে Java-তে ইমপ্লিমেন্ট করা হয়।


Lambda এবং Streams API এর সাথে Tuples এর Integration

১. Tuples ব্যবহার করে Map Operations

Lambda Expressions এবং Tuples ব্যবহার করে Streams এর map() অপারেশন সহজ করা যায়।

Example: Converting a List of Strings to Tuples

import io.vavr.Tuple;
import io.vavr.Tuple2;

import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class TupleWithStreams {
    public static void main(String[] args) {
        List<String> names = List.of("Alice", "Bob", "Charlie");

        // Convert List of Strings to Tuples (name, length)
        List<Tuple2<String, Integer>> tuples = names.stream()
                .map(name -> Tuple.of(name, name.length()))
                .collect(Collectors.toList());

        tuples.forEach(tuple -> System.out.println("Name: " + tuple._1 + ", Length: " + tuple._2));
    }
}

Output:

Name: Alice, Length: 5
Name: Bob, Length: 3
Name: Charlie, Length: 7

২. Tuples ব্যবহার করে Filtering

Tuples এবং Streams এর filter() অপারেশন একত্রে ব্যবহার করে ডেটা ফিল্টার করা সহজ।

Example: Filtering Tuples by a Condition

import io.vavr.Tuple;
import io.vavr.Tuple2;

import java.util.List;
import java.util.stream.Collectors;

public class FilterTuples {
    public static void main(String[] args) {
        List<Tuple2<String, Integer>> tuples = List.of(
                Tuple.of("Alice", 25),
                Tuple.of("Bob", 30),
                Tuple.of("Charlie", 35)
        );

        // Filter Tuples where age > 30
        List<Tuple2<String, Integer>> filtered = tuples.stream()
                .filter(tuple -> tuple._2 > 30)
                .collect(Collectors.toList());

        filtered.forEach(tuple -> System.out.println("Name: " + tuple._1 + ", Age: " + tuple._2));
    }
}

Output:

Name: Charlie, Age: 35

৩. Tuples এবং Streams এর FlatMap ব্যবহার

FlatMap ব্যবহার করে Nested Tuples বা Collection-এর উপর কাজ করা যায়।

Example: Processing Nested Tuples

import io.vavr.Tuple;
import io.vavr.Tuple2;

import java.util.List;
import java.util.stream.Collectors;

public class FlatMapTuples {
    public static void main(String[] args) {
        List<Tuple2<String, List<Integer>>> tuples = List.of(
                Tuple.of("Alice", List.of(85, 90, 95)),
                Tuple.of("Bob", List.of(70, 75, 80))
        );

        // Flatten the grades
        List<Tuple2<String, Integer>> flatMapped = tuples.stream()
                .flatMap(tuple -> tuple._2.stream().map(grade -> Tuple.of(tuple._1, grade)))
                .collect(Collectors.toList());

        flatMapped.forEach(tuple -> System.out.println("Name: " + tuple._1 + ", Grade: " + tuple._2));
    }
}

Output:

Name: Alice, Grade: 85
Name: Alice, Grade: 90
Name: Alice, Grade: 95
Name: Bob, Grade: 70
Name: Bob, Grade: 75
Name: Bob, Grade: 80

৪. Tuples ব্যবহার করে Grouping এবং Counting

Collectors.groupingBy এবং Collectors.counting এর মাধ্যমে Tuples এর ডেটা গ্রুপিং এবং গণনা করা যায়।

Example: Grouping Tuples by a Key

import io.vavr.Tuple;
import io.vavr.Tuple2;

import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class GroupTuples {
    public static void main(String[] args) {
        List<Tuple2<String, Integer>> tuples = List.of(
                Tuple.of("Alice", 25),
                Tuple.of("Bob", 30),
                Tuple.of("Alice", 35),
                Tuple.of("Bob", 40)
        );

        // Group by Name and Count
        Map<String, Long> grouped = tuples.stream()
                .collect(Collectors.groupingBy(tuple -> tuple._1, Collectors.counting()));

        grouped.forEach((name, count) -> System.out.println("Name: " + name + ", Count: " + count));
    }
}

Output:

Name: Alice, Count: 2
Name: Bob, Count: 2

৫. Tuples এবং Streams এর Reduce অপারেশন

Reduce অপারেশন ব্যবহার করে Tuples এর উপর নির্দিষ্ট মান গণনা করা যায়।

Example: Summing Ages from Tuples

import io.vavr.Tuple;
import io.vavr.Tuple2;

import java.util.List;

public class ReduceTuples {
    public static void main(String[] args) {
        List<Tuple2<String, Integer>> tuples = List.of(
                Tuple.of("Alice", 25),
                Tuple.of("Bob", 30),
                Tuple.of("Charlie", 35)
        );

        // Calculate Total Age
        int totalAge = tuples.stream()
                .map(tuple -> tuple._2)
                .reduce(0, Integer::sum);

        System.out.println("Total Age: " + totalAge);
    }
}

Output:

Total Age: 90

Tuples এবং Streams Integration এর সুবিধা

  1. Cleaner Code: Lambda এবং Streams API ব্যবহার করে Tuples এর সাথে কাজ করা সহজ এবং রিডেবল।
  2. Functional Programming: Immutable Tuples এবং Streams API একত্রে ফাংশনাল প্রোগ্রামিংয়ের সুবিধা প্রদান করে।
  3. Data Transformation: ডেটা গ্রুপিং, ফিল্টারিং, এবং প্রসেসিং আরো সহজ হয়।
  4. Efficient Processing: Parallel Streams ব্যবহার করে Tuples এর ডেটা দ্রুত প্রসেস করা যায়।

Tuples এবং Streams Integration এর সীমাবদ্ধতা

  1. Nesting Complexity: Nested Tuples প্রসেস করা জটিল হতে পারে।
  2. Limited Readability: Tuples এর _1, _2 ইত্যাদি ফিল্ড নাম অজানা থাকলে কোড কম রিডেবল হয়।
  3. Custom Libraries Required: Java-তে Tuples এর জন্য Vavr বা Apache Commons-এর মতো থার্ড-পার্টি লাইব্রেরি ব্যবহার করতে হয়।

Java 8 এর Lambda এবং Streams API এর সাথে Tuples ইন্টিগ্রেশন করে:

  1. ডেটা প্রসেসিং সহজ এবং কার্যকর হয়।
  2. ফাংশনাল প্রোগ্রামিং প্যাটার্ন ব্যবহার করা সম্ভব।
  3. ক্লিন এবং রিডেবল কোড রচনা করা যায়।

Best Practice: Tuples ব্যবহার করার সময় কোড রিডেবিলিটি বাড়াতে _1, _2 এর পরিবর্তে মেথড বা ভেরিয়েবল নাম ব্যবহার করুন। বড় ডেটা মডেলের জন্য Tuples এর পরিবর্তে Record বা POJO ব্যবহার করা ভালো।

Content added By
Promotion

Are you sure to start over?

Loading...