Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

Java में Collection.stream().forEach() और Collection.forEach() के बीच अंतर


Collection.stream().forEach() और Collection.forEach() दोनों का उपयोग कलेक्शन पर पुनरावृत्ति (iteration) के लिए किया जाता है।

Collection.forEach() कलेक्शन के इटरेटर (iterator) का उपयोग करता है। अधिकांश कलेक्शन पुनरावृत्ति के दौरान संरचनात्मक संशोधन (structural modification) की अनुमति नहीं देते। यदि पुनरावृत्ति के दौरान कोई तत्व जोड़ा या हटाया जाता है, तो वे तुरंत ConcurrentModificationException फेंक देते हैं। यदि Collection.forEach() सिंक्रनाइज़्ड कलेक्शन पर पुनरावृत्ति कर रहा है, तो यह कलेक्शन के सेगमेंट को लॉक कर देता है और सभी कॉल्स के दौरान इसे होल्ड करके रखता है।

Collection.stream().forEach() भी कलेक्शन पर पुनरावृत्ति के लिए उपयोग किया जाता है, लेकिन यह पहले कलेक्शन को स्ट्रीम में परिवर्तित करता है और फिर कलेक्शन की स्ट्रीम पर पुनरावृत्ति करता है, इसलिए प्रसंस्करण क्रम (processing order) अपरिभाषित (undefined) होता है। यदि पुनरावृत्ति के दौरान कोई संरचनात्मक परिवर्तन होता है, तो यह भी ConcurrentModificationException फेंकता है, लेकिन अपवाद बाद में फेंका जा सकता है।

क्र. सं. मुख्य बिंदु Collection.forEach() Collection.stream().forEach()

1

आधार

Collection.forEach() कलेक्शन के इटरेटर का उपयोग करता है

Collection.stream().forEach() पहले कलेक्शन को स्ट्रीम में बदलता है फिर स्ट्रीम पर पुनरावृत्ति करता है

2

क्रम (Order)

यह हमेशा Iterable के पुनरावृत्ति क्रम में निष्पादित होता है, यदि कोई निर्दिष्ट हो।

क्रम परिभाषित नहीं है

3

लॉक (Lock)

यदि पुनरावृत्ति सिंक्रनाइज़्ड कलेक्शन पर हो रही है तो यह कलेक्शन को लॉक करता है और सभी कॉल्स के दौरान होल्ड रखता है

यह कलेक्शन को लॉक नहीं करता

4

अपवाद (Exception)

कलेक्शन में किसी भी संरचनात्मक संशोधन के मामले में तुरंत अपवाद फेंकता है

अपवाद बाद में फेंका जाता है

उदाहरण: Collection.stream().forEach()

import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List list = new ArrayList<>();
        list.add("Ram");
        list.add("TutorialPoints");
        list.stream().forEach(System.out::print);
    }
}

उदाहरण: Collection.forEach()

import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List list = new ArrayList<>();
        list.add("Ram");
        list.add("TutorialPoints");
        list.forEach(System.out::print);
    }
}

  1. - जावा में Serialization और Externalization के बीच अंतर

    Serialization और Externalization दोनों ऑब्जेक्ट को बाइट स्ट्रीम में बदलने और बाइट स्ट्रीम को डेटाबेस या मेमोरी में स्टोर करने की प्रक्रियाएं हैं। जो क्लास java.io.Serializable इंटरफेस को इम्प्लीमेंट करती है उसे सीरियलाइज किया जा सकता है। दूसरी ओर, Externalization एप्लिकेशन में आवश्यकता के आधार पर कस

  1. - जावा में Iterator और Enumeration के बीच अंतर

    Iterator और Enumeration दोनों कलेक्शन से एलिमेंट्स को ट्रैवर्स और एक्सेस करने के लिए कर्सर हैं। वे दोनों कलेक्शन फ्रेमवर्क से संबंधित हैं। Enumeration JDK 1.0 में जोड़ा गया था और Iterator JDK 1.2 वर्जन में कलेक्शन फ्रेमवर्क में जोड़ा गया। Enumeration कलेक्शन में स्ट्रक्चरल चेंज नहीं कर सकता क्योंकि

  1. - Java में ArrayList और HashSet के बीच अंतर

    HashSet और ArrayList दोनों Java कलेक्शन फ्रेमवर्क के सबसे महत्वपूर्ण क्लासेस में से कुछ हैं।ArrayList और HashSet के बीच महत्वपूर्ण अंतर निम्नलिखित हैं।क्रमांकमुख्य बिंदुArrayListHashSet1कार्यान्वयनArrayList लिस्ट इंटरफेस का कार्यान्वयन है।दूसरी ओर HashSet सेट इंटरफेस का कार्यान्वयन है।2आंतरिक कार्या