1. डेटा रूपांतरण

वर्गामध्ये Stream<T>एक पद्धत देखील आहे जी तुम्हाला डेटा एका प्रकारातून दुसऱ्या प्रकारात रूपांतरित करू देते. ही पद्धत आहे map().

हे एक प्रवाह देखील परत करते, परंतु भिन्न प्रकारच्या घटकांसह. पद्धत map()एक पद्धत युक्तिवाद म्हणून एक फंक्शन घेते जे एका डेटा प्रकारात रूपांतरित करते.

उदाहरणे:

Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5);
Stream<String> stream2 = stream.map((x) -> String.valueOf(x));
प्रवाहाचे Integerप्रवाहात रूपांतर करणेString

पद्धतीला दिलेले फंक्शन आर्ग्युमेंट map()एक संख्या घेते xआणि त्याचे स्ट्रिंग प्रतिनिधित्व मिळवते. तसे, आपण हा कोड अधिक संक्षिप्तपणे लिहू शकता:

Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5);
Stream<String> stream2 = stream.map(String::valueOf);
प्रवाहाचे Integerप्रवाहात रूपांतर करणेString

स्ट्रिंगला संख्येत रूपांतरित करणे

त्याचप्रमाणे, तुम्ही स्ट्रिंगला नंबरमध्ये रूपांतरित करण्यासाठी कोड लिहू शकता - हे देखील क्लिष्ट नाही:

Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5);
Stream<String> stream2 = stream.map(String::valueOf);
Stream<Integer> stream3 = stream2.map(Integer::parseInt);
प्रवाहाचे प्रवाहात Stringरूपांतर करणेInteger

एक स्ट्रिंग a मध्ये रूपांतरित करणेURI

डेटा रूपांतरण ऑपरेशन्स संसाधन- आणि वेळ गहन असू शकतात. समजा आम्हाला स्ट्रिंग्सचा संग्रह URI ऑब्जेक्ट्समध्ये रूपांतरित करायचा आहे. हे करणे खूप सोपे आहे, कारण URI कन्स्ट्रक्टर एक स्ट्रिंग वितर्क म्हणून घेतो.

ArrayList<String> list = new ArrayList<String>();
list.add("https://google.com");
list.add("https://linkedin.com");
list.add("https://yandex.com");

Stream<URI> stream = list.stream().map( URI::new );
Stringप्रवाहाचे प्रवाहात URIरूपांतर करणे

आम्ही एक संग्रह तयार केला आणि तो 3 वेब पत्त्यांसह भरला. मग आम्हाला संग्रहातून एक वस्तू मिळाली Stream<String>आणि त्या प्रवाहातून आम्हाला एक Stream<URI>वस्तू मिळाली. प्रत्येक स्ट्रिंगला URI मध्ये रूपांतरित करण्यासाठी वापरल्या जाणार्‍या पद्धतीचा संदर्भ आम्ही नकाशा पद्धत पास केला.

Stringही पद्धत (कन्स्ट्रक्टर) वितर्क म्हणून घेणे आवश्यक आहे . सर्वकाही परिपूर्ण आहे असे दिसते ...


2. अपवाद

आम्ही वरील कोड कार्य करेल अशी अपेक्षा करू शकतो, परंतु तसे होणार नाही - प्रोग्राम संकलित होणार नाही. आणि आम्ही कुठेतरी चूक केली म्हणून नाही, तर Java च्या निर्मात्यांनी गोंधळ केल्यामुळे.

एकेकाळी, त्यांच्याकडे क्लास कन्स्ट्रक्टरमध्ये चेक केलेला अपवाद ( URISyntaxException) जोडण्याची उत्तम कल्पना होती URI! आणि असे अपवाद a मध्ये गुंडाळले जाणे आवश्यक आहे try-catch.

तर आमच्या कोडची शेवटची ओळ अशी दिसेल:

Stream<URI> stream = list.stream().map(str ->
{
  try
  {
     return new URI(str);
  }
  catch (URISyntaxException e)
  {
     e.printStackTrace();
     return null;
  }
});

आम्ही काय म्हणू शकतो? चेक केलेला अपवाद वापरण्यापूर्वी तुम्ही दोनदा विचार केला पाहिजे . आणि कन्स्ट्रक्टरमध्ये वापरण्यापूर्वी तीन वेळा विचार करा.