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);
एक स्ट्रिंग को ए में कनवर्ट करना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>
वस्तु मिली। हमने मैप विधि को उस विधि का संदर्भ दिया है जिसका उपयोग प्रत्येक स्ट्रिंग को यूआरआई में बदलने के लिए किया जाएगा।
इस विधि (निर्माता) को String
तर्क के रूप में a लेना चाहिए। लगता है सब कुछ मुकम्मल है...
2. अपवाद
हम उम्मीद कर सकते हैं कि ऊपर दिए गए कोड को काम करना चाहिए, लेकिन ऐसा नहीं होगा - प्रोग्राम संकलित नहीं होगा। और इसलिए नहीं कि हमने कहीं गलती की है, बल्कि इसलिए कि जावा के निर्माताओं ने गड़बड़ कर दी।
एक बार, उनके पास क्लास कंस्ट्रक्टर URISyntaxException
में चेक किए गए अपवाद () को जोड़ने का शानदार विचार था! URI
और ऐसे अपवादों को एक में लपेटा जाना चाहिए 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