Streams এবং Iterables এর মধ্যে সম্পর্ক

Guava এবং Java 8 Streams - গুয়াভা (Guava) - Java Technologies

321

Guava লাইব্রেরি Java-তে কাজের সুবিধার্থে প্রচুর utility প্রদান করে। Streams এবং Iterables উভয়ই ডেটা প্রসেসিং এবং পুনরাবৃত্তির (iteration) জন্য ব্যবহৃত হয়, তবে তাদের উদ্দেশ্য, আচরণ এবং ব্যবহারের ক্ষেত্রে পার্থক্য রয়েছে।


Streams

Java 8 থেকে Streams API পরিচিতি পায়। এটি ডেটা প্রসেসিং-এর একটি নতুন পদ্ধতি প্রদান করে, যা কার্যকরী প্রোগ্রামিং ধারণা এবং প্যারালাল প্রসেসিং সহজ করে।

Streams-এর বৈশিষ্ট্য:

  1. ফাংশনাল প্রোগ্রামিং: Streams ফাংশনাল পদ্ধতিতে কাজ করে।
  2. লেজি প্রসেসিং (Lazy Evaluation): Streams তখনই ডেটা প্রসেস করে যখন তার প্রয়োজন হয়।
  3. ডেটা প্রসেসিং পাইপলাইন:
    • Streams ডেটাকে একটি পাইপলাইনের মতো প্রক্রিয়াজাত করে।
    • Intermediate operations (e.g., map, filter) এবং terminal operations (e.g., collect, forEach) থাকে।
  4. Parallel Processing সাপোর্ট: Streams সহজে প্যারালাল প্রসেসিং পরিচালনা করতে পারে।

উদাহরণ:

import java.util.stream.Stream;

public class StreamExample {
    public static void main(String[] args) {
        Stream.of("apple", "banana", "cherry")
              .filter(fruit -> fruit.startsWith("b"))
              .map(String::toUpperCase)
              .forEach(System.out::println); // Output: BANANA
    }
}

Iterables

Iterable হল Java-এর একটি মূল কাঠামো যা java.lang.Iterable ইন্টারফেসের মাধ্যমে প্রদত্ত হয়। এটি Collections Framework-এর ভিত্তি এবং পুনরাবৃত্তি করার জন্য ব্যবহৃত হয়।

Iterables-এর বৈশিষ্ট্য:

  1. অপরিহার্য ভাবে সিকুয়েন্সিয়াল (Sequential): Iterable সবসময় সিকুয়েন্সিয়ালভাবে কাজ করে।
  2. ডেটা পুনরাবৃত্তি (Iteration): এটি for-each লুপ বা Iterator ব্যবহার করে কাজ করে।
  3. সরাসরি ডেটা প্রসেসিং নয়: Iterable শুধুমাত্র পুনরাবৃত্তি করার জন্য ব্যবহৃত হয়, Streams-এর মতো ডেটা প্রসেসিং ক্ষমতা নেই।
  4. Guava থেকে অতিরিক্ত সুবিধা: Guava-এর Iterables ক্লাস অতিরিক্ত অপারেশন প্রদান করে, যেমন concat, filter, transform, ইত্যাদি।

উদাহরণ:

import java.util.Arrays;

public class IterableExample {
    public static void main(String[] args) {
        Iterable<String> fruits = Arrays.asList("apple", "banana", "cherry");

        for (String fruit : fruits) {
            System.out.println(fruit);
        }
    }
}

Guava-এ Streams এবং Iterables-এর সংযোগ:

Guava Streams এবং Iterables-এর মধ্যে কাজ সহজ করতে বিভিন্ন ইউটিলিটি প্রদান করে।

Iterables থেকে Streams-এ রূপান্তর:

Guava Streams API ব্যবহার করে Iterable কে Streams-এ রূপান্তর করা যায়।

উদাহরণ:
import com.google.common.collect.Streams;
import java.util.Arrays;
import java.util.stream.Stream;

public class IterableToStream {
    public static void main(String[] args) {
        Iterable<String> fruits = Arrays.asList("apple", "banana", "cherry");

        Stream<String> fruitStream = Streams.stream(fruits);
        fruitStream.map(String::toUpperCase)
                   .forEach(System.out::println); // Output: APPLE BANANA CHERRY
    }
}

Streams থেকে Iterables-এ রূপান্তর:

Streams কে Guava-এর সাহায্যে Iterable এ রূপান্তর করা যায়।

উদাহরণ:
import com.google.common.collect.Iterables;
import java.util.stream.Stream;

public class StreamToIterable {
    public static void main(String[] args) {
        Stream<String> fruitStream = Stream.of("apple", "banana", "cherry");

        Iterable<String> fruits = fruitStream::iterator; // Convert Stream to Iterable
        fruits.forEach(System.out::println); // Output: apple banana cherry
    }
}

Streams এবং Iterables-এর তুলনা

বৈশিষ্ট্যStreamsIterables
ব্যবহারডেটা প্রসেসিং এবং পাইপলাইনিংডেটার উপর পুনরাবৃত্তি
লেজি প্রসেসিংহ্যাঁনা
Functional Supportউচ্চসীমিত
Parallel Processingহ্যাঁনা
Guava IntegrationStreams.stream()Iterables ইউটিলিটি ক্লাস

  • Streams জটিল ডেটা প্রসেসিং-এর জন্য উপযুক্ত যেখানে Iterables পুনরাবৃত্তির জন্য ব্যবহার করা হয়।
  • Guava লাইব্রেরি Streams এবং Iterables-এর মধ্যে রূপান্তর এবং কাজ সহজ করতে শক্তিশালী সমাধান প্রদান করে।
  • Streams যখন ফাংশনাল স্টাইল প্রসেসিং-এর জন্য ব্যবহার হয়, Iterables ডেটার বেসিক traversal-এর জন্য আদর্শ।
Content added By
Promotion

Are you sure to start over?

Loading...