1. डेटा रूपांतरण
वर्गामध्ये Stream<T>
एक पद्धत देखील आहे जी तुम्हाला डेटा एका प्रकारातून दुसऱ्या प्रकारात रूपांतरित करू देते. ही पद्धत आहे map()
.
हे एक प्रवाह देखील परत करते, परंतु भिन्न प्रकारच्या घटकांसह. पद्धत map()
एक पद्धत युक्तिवाद म्हणून एक फंक्शन घेते जे एका डेटा प्रकारात रूपांतरित करते.
उदाहरणे:
Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5);
Stream<String> stream2 = stream.map((x) -> String.valueOf(x));
पद्धतीला दिलेले फंक्शन आर्ग्युमेंट map()
एक संख्या घेते x
आणि त्याचे स्ट्रिंग प्रतिनिधित्व मिळवते. तसे, आपण हा कोड अधिक संक्षिप्तपणे लिहू शकता:
Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5);
Stream<String> stream2 = stream.map(String::valueOf);
स्ट्रिंगला संख्येत रूपांतरित करणे
त्याचप्रमाणे, तुम्ही स्ट्रिंगला नंबरमध्ये रूपांतरित करण्यासाठी कोड लिहू शकता - हे देखील क्लिष्ट नाही:
Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5);
Stream<String> stream2 = stream.map(String::valueOf);
Stream<Integer> stream3 = stream2.map(Integer::parseInt);
एक स्ट्रिंग 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 );
आम्ही एक संग्रह तयार केला आणि तो 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;
}
});
आम्ही काय म्हणू शकतो? चेक केलेला अपवाद वापरण्यापूर्वी तुम्ही दोनदा विचार केला पाहिजे . आणि कन्स्ट्रक्टरमध्ये वापरण्यापूर्वी तीन वेळा विचार करा.
GO TO FULL VERSION