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

एक स्ट्रिंग को ए में कनवर्ट करना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>वस्तु मिली। हमने मैप विधि को उस विधि का संदर्भ दिया है जिसका उपयोग प्रत्येक स्ट्रिंग को यूआरआई में बदलने के लिए किया जाएगा।

इस विधि (निर्माता) को 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;
  }
});

हम क्या कह सकते हैं? चेक किए गए अपवाद का उपयोग करने से पहले आपको दो बार सोचना चाहिए । और उन्हें कंस्ट्रक्टर में इस्तेमाल करने से पहले तीन बार सोचें।