JavaRush /جاوا بلاگ /Random-SD /ڪافي بريڪ #177. جاوا 8 ۾ جاوا اسٽريم لاءِ تفصيلي گائيڊ

ڪافي بريڪ #177. جاوا 8 ۾ جاوا اسٽريم لاءِ تفصيلي گائيڊ

گروپ ۾ شايع ٿيل
ذريعو: Hackernoon هي پوسٽ ڪوڊ مثالن ۽ وضاحتن سان گڏ جاوا اسٽريم سان ڪم ڪرڻ تي تفصيلي سبق مهيا ڪري ٿي. ڪافي بريڪ #177.  جاوا 8 - 1 ۾ جاوا اسٽريم لاءِ تفصيلي گائيڊ

جاوا 8 ۾ جاوا سلسلي جو تعارف

جاوا اسٽريمز، جاوا 8 جي حصي طور متعارف ڪرايا ويا، ڊيٽا گڏ ڪرڻ سان ڪم ڪرڻ لاءِ استعمال ڪيا ويندا آهن. اهي پاڻ ۾ ڊيٽا جي جوڙجڪ نه آهن، پر استعمال ڪري سگهجي ٿو ٻين ڊيٽا جي جوڙجڪ مان معلومات داخل ڪرڻ لاء ترتيب ڏيڻ ۽ پائپ لائننگ ذريعي حتمي نتيجو پيدا ڪرڻ لاء. نوٽ: اهو ضروري آهي ته اسٽريم ۽ ٿريڊ کي غلط استعمال نه ڪيو وڃي، ڇاڪاڻ ته روسي ٻوليءَ ۾ ٻنهي اصطلاحن کي اڪثر ساڳئي ترجمي ۾ حوالو ڏنو ويندو آهي ”فلو“. اسٽريم هڪ اعتراض کي ظاهر ڪري ٿو عملن کي انجام ڏيڻ لاءِ (اڪثر ڪري ڊيٽا کي منتقل ڪرڻ يا محفوظ ڪرڻ)، جڏهن ته Thread (لفظي ترجمو - ٿريڊ) هڪ اعتراض کي ظاهر ڪري ٿو جيڪو ڪجهه پروگرام ڪوڊ کي ٻين ڪوڊ شاخن سان متوازي طور تي عمل ڪرڻ جي اجازت ڏئي ٿو. ڇو ته وهڪرو هڪ الڳ ڊيٽا جي جوڙجڪ ناهي، اهو ڪڏهن به ڊيٽا جو ذريعو تبديل نٿو ڪري. جاوا اسٽريمز ۾ ھيٺيون خاصيتون آھن:
  1. جاوا اسٽريم استعمال ڪري سگھجي ٿو ”java.util.stream“ پيڪيج. اهو ڪوڊ استعمال ڪندي اسڪرپٽ ۾ درآمد ڪري سگھجي ٿو:

    import java.util.stream.* ;

    هن ڪوڊ کي استعمال ڪندي، اسان پڻ آساني سان لاڳو ڪري سگهون ٿا ڪيترن ئي تعمير ٿيل افعال جاوا اسٽريم ۾.

  2. جاوا اسٽريم ڊيٽا جي مجموعن مان ان پٽ کي قبول ڪري سگھي ٿو جهڙوڪ جاوا ۾ مجموعا ۽ صفون.

  3. جاوا اسٽريم کي ان پٽ ڊيٽا جي جوڙجڪ کي تبديل ڪرڻ جي ضرورت ناهي.

  4. جاوا وهڪرو ذريعو تبديل نٿو ڪري. ان جي بدران، اهو مناسب پائپ لائن طريقن کي استعمال ڪندي پيداوار پيدا ڪري ٿو.

  5. جاوا اسٽريمز وچولي ۽ ٽرمينل آپريشنز سان مشروط آهن، جن تي اسين هيٺين حصن ۾ بحث ڪنداسين.

  6. جاوا اسٽريم ۾، وچولي آپريشن پائيپ لائين ۽ سست تشخيص جي شڪل ۾ ٿينديون آهن. اهي ٽرمينل افعال سان ختم ڪن ٿا. هي جاوا اسٽريم استعمال ڪرڻ لاءِ بنيادي فارميٽ ٺاهي ٿو.

ايندڙ حصي ۾، اسان جاوا 8 ۾ استعمال ٿيندڙ مختلف طريقن تي نظر ڪنداسين جاوا اسٽريم ٺاهڻ لاءِ جيئن ۽ جڏهن گهربل هجي.

جاوا 8 ۾ جاوا اسٽريم ٺاهڻ

جاوا سلسلا ڪيترن ئي طريقن سان ٺاهي سگھجن ٿا:

1. Stream.empty() طريقو استعمال ڪندي هڪ خالي وهڪرو ٺاهيو

توهان پنهنجي ڪوڊ ۾ بعد ۾ استعمال ڪرڻ لاءِ هڪ خالي وهڪرو ٺاهي سگهو ٿا. جيڪڏھن توھان استعمال ڪريو ٿا Stream.empty() طريقو ، ھڪڙو خالي وهڪرو ٺاھيو ويندو، جنھن ۾ ڪو قدر ناھي. هي خالي وهڪرو ڪم ۾ اچي سگهي ٿو جيڪڏهن اسان چاهيون ٿا ته رن ٽائم تي هڪ نال پوائنٽر استثنا ڇڏڻ. ھن کي ڪرڻ لاء توھان ھيٺ ڏنل حڪم استعمال ڪري سگھو ٿا:
Stream<String> str = Stream.empty();
مٿي ڏنل بيان ان جي اندر ڪنهن به عنصر کان سواءِ str نالي هڪ خالي وهڪرو ٺاهيندو . ان جي تصديق ڪرڻ لاءِ، صرف str.count() اصطلاح استعمال ڪندي وهڪرو جو تعداد يا سائيز چيڪ ڪريو . مثال طور،
System.out.println(str.count());
نتيجي طور، اسان حاصل ڪريون 0 ٻاھر تي .

2. Stream.builder () طريقي سان Stream.builder مثال استعمال ڪندي هڪ وهڪرو ٺاهيو

اسان پڻ استعمال ڪري سگھون ٿا اسٽريم بلڊر کي استعمال ڪندي هڪ وهڪرو ٺاهڻ لاءِ بلڊر ڊيزائن جو نمونو. اهو شين جي قدم قدم جي تعمير لاء ٺهيل آهي. اچو ته ڏسون ته اسان اسٽريم بلڊر استعمال ڪندي هڪ اسٽريم کي ڪيئن تيز ڪري سگهون ٿا .
Stream.Builder<Integer> numBuilder = Stream.builder();

numBuilder.add(1).add(2).add( 3);

Stream<Integer> numStream = numBuilder.build();
هن ڪوڊ کي استعمال ڪندي، توهان numStream نالي هڪ وهڪرو ٺاهي سگهو ٿا جنهن ۾ int عناصر شامل آهن . هر شي تمام جلدي ٿي وئي آهي مهرباني ڪري Stream.Builder مثال جنهن کي numBuilder سڏيو ويندو آهي جيڪو پهريون ٺاهيو ويو آهي.

3. Stream.of() طريقو استعمال ڪندي مخصوص قدرن سان هڪ وهڪرو ٺاهيو

ھڪڙو وهڪرو ٺاھڻ جو ٻيو طريقو استعمال ڪرڻ شامل آھي Stream.of() طريقو . ڏنل قدرن سان هڪ وهڪرو ٺاهڻ جو اهو هڪ آسان طريقو آهي. اهو بيان ڪري ٿو ۽ ان سلسلي کي پڻ شروع ڪري ٿو. اسٽريم ٺاهڻ لاءِ Stream.of() طريقو استعمال ڪرڻ جو هڪ مثال:
Stream<Integer> numStream = Stream.of(1, 2, 3);
هي ڪوڊ هڪ وهڪرو ٺاهيندو جنهن ۾ int عناصر شامل آهن ، جيئن اسان اڳئين طريقي ۾ Stream.Builder استعمال ڪندي ڪيو هو . هتي اسان سڌو سنئون هڪ وهڪرو ٺاهيو آهي Stream.of() استعمال ڪندي اڳواٽ بيان ڪيل قدرن سان [1, 2 ۽ 3] .

4. Arrays.stream() طريقو استعمال ڪندي موجوده صف مان ھڪڙو وهڪرو ٺاھيو

ٿريڊ ٺاهڻ لاءِ ٻيو عام طريقو جاوا ۾ arrays استعمال ڪرڻ شامل آهي. ھتي وهڪرو Arrays.stream() طريقو استعمال ڪندي موجوده صف مان ٺاھيو ويو آھي . سڀئي صفون عناصر اسٽريم عناصر ۾ تبديل ڪيا ويا آھن. هتي هڪ سٺو مثال آهي:
Integer[] arr = {1, 2, 3, 4, 5};

Stream<Integer> numStream = Arrays.stream(arr);
هي ڪوڊ هڪ numStream ٺاهيندو جنهن ۾ هڪ آري جي مواد شامل هوندي جنهن کي arr سڏيو ويندو آهي، جيڪو هڪ انٽيجر صف آهي.

5. Stream.concat() طريقو استعمال ڪندي ٻن موجود اسٽريمز کي ضم ڪرڻ

ٻيو طريقو جيڪو استعمال ڪري سگهجي ٿو هڪ وهڪرو ٺاهڻ لاءِ آهي Stream.concat() طريقو . اهو استعمال ڪيو ويندو آهي ٻن موضوعن کي گڏ ڪرڻ لاءِ هڪ ڌاڳو ٺاهڻ لاءِ. ٻئي وهڪرو ترتيب سان گڏ ٿيل آهن. ان جو مطلب اهو آهي ته پهرين سٽ پهرين اچي، ان کان پوءِ ٻي سٽ وغيره. اهڙي ٺاهه جو هڪ مثال هن طرح نظر اچي ٿو:
Stream<Integer> numStream1 = Stream.of(1, 2, 3, 4, 5);

Stream<Integer> numStream2 = Stream.of(1, 2, 3);

Stream<Integer> combinedStream = Stream.concat( numStream1, numStream2);
مٿي ڏنل بيان گڏيل اسٽريم نالي هڪ فائنل اسٽريم ٺاهيندو جنهن ۾ پهريون اسٽريم numStream1 ۽ ٻيو وهڪرو numStream2 هڪ هڪ ڪري عنصرن تي مشتمل هوندو .

جاوا اسٽريم سان آپريشن جا قسم

جيئن اڳ ۾ ئي ذڪر ڪيو ويو آهي، توهان جاوا 8 ۾ جاوا اسٽريم سان ٻه قسم جا آپريشن ڪري سگهو ٿا: وچولي ۽ ٽرمينل. اچو ته انهن مان هر هڪ کي وڌيڪ تفصيل سان ڏسو.

وچولي آپريشن

وچولي آپريشن هڪ آئوٽ اسٽريم ٺاهي ٿو ۽ صرف ان وقت تي عمل ڪيو ويندو آهي جڏهن ٽرمينل آپريشن کي منهن ڏيڻو پوي ٿو. هن جو مطلب آهي ته وچولي آپريشن کي سستي طور تي، پائيپ لائين، ۽ صرف ٽرمينل آپريشن ذريعي مڪمل ڪري سگهجي ٿو. توهان ٿوري دير بعد سست تشخيص ۽ پائپ لائننگ بابت سکندا. وچولي عملن جا مثال ھيٺ ڏنل طريقا آھن: filter() , map() , different() , peek() , sorted() ۽ ڪجھ ٻيا.

ٽرمينل آپريشن

ٽرمينل آپريشنز وچولي عملن جي عمل کي مڪمل ڪن ٿا ۽ پڻ ٻاھرين ٻاھرين جي آخري نتيجن کي واپس ڪن ٿا. ڇاڪاڻ ته ٽرمينل آپريشن سست عمل ۽ پائپ لائننگ جي خاتمي جو اشارو ڏئي ٿو، اهو سلسلو ٽرمينل آپريشن کان پوءِ ٻيهر استعمال نٿو ڪري سگهجي. ٽرمينل آپريشن جا مثال ھيٺ ڏنل طريقا آھن: forEach() , collect() , count() , reduce() وغيره.

جاوا اسٽريم سان آپريشن جا مثال

وچولي آپريشن

هتي ڪجهه وچولي عملن جا ڪجهه مثال آهن جيڪي جاوا اسٽريم تي لاڳو ٿي سگهن ٿيون:

فلٽر ()

اهو طريقو استعمال ڪيو ويندو آهي عناصر کي فلٽر ڪرڻ لاءِ هڪ وهڪرو جيڪو جاوا ۾ هڪ مخصوص اڳڪٿي سان ملندو آهي. اهي فلٽر ٿيل شيون وري هڪ نئون وهڪرو ٺاهيندا آهن. اچو ته بهتر نموني سمجهڻ لاءِ هڪ مثال تي نظر وجهون.
Stream<Integer> numStream = Stream.of(43, 65, 1, 98, 63); List<Integer> even = numStream.filter(n -> n % 2 == 0) .collect(Collectors.toList()); System.out.println(even);
نتيجو:
[98]
وضاحت: هن مثال ۾، توهان ڏسي سگهو ٿا ته ايستائين جو عناصر (2 سان ورهايل) فلٽر () طريقي سان فلٽر ڪيا ويا آهن ۽ انٽيجر لسٽ numStream ۾ محفوظ ڪيا ويا آهن ، جن جا مواد بعد ۾ ڇپيا ويندا. 98 کان وٺي نديءَ ۾ واحد برابر عدد آهي، ان ڪري ان کي پرنٽ ڪيو ويندو آهي.

نقشو()

هي طريقو اصل ان پٽ اسٽريم جي عناصرن تي ميپ ٿيل ڪمن کي عمل ڪندي هڪ نئون وهڪرو ٺاهڻ لاءِ استعمال ڪيو ويندو آهي. شايد نئين اسٽريم ۾ مختلف ڊيٽا جو قسم آهي. مثال هن طرح نظر اچي ٿو:
Stream<Integer> numStream = Stream.of(43, 65, 1, 98, 63); List<Integer> d = numStream.map(n -> n*2) .collect(Collectors.toList()); System.out.println(d);
نتيجو:
[86، 130، 2، 196، 126]
وضاحت: هتي اسان ڏسون ٿا ته نقشو() طريقو استعمال ڪيو ويندو آهي صرف numStream اسٽريم جي هر عنصر کي ٻيڻو ڪرڻ لاءِ . جئين توھان ڏسي سگھوٿا ٻاھرين مان، ھر ھڪ عنصر جو سلسلو ڪاميابيءَ سان ٻيڻو ڪيو ويو آھي.

الڳ ()

اهو طريقو استعمال ڪيو ويندو آهي صرف انفرادي عناصر کي ٻيهر حاصل ڪرڻ لاء هڪ وهڪرو ۾ نقل ڪندي فلٽر ڪندي. ساڳئي نموني جو هڪ مثال هن طرح نظر اچي ٿو:
Stream<Integer> numStream = Stream.of(43,65,1,98,63,63,1); List<Integer> numList = numStream.distinct() .collect(Collectors.toList()); System.out.println(numList);
نتيجو:
[43، 65، 1، 98، 63]
وضاحت: هن صورت ۾، مختلف () طريقو استعمال ڪيو ويندو آهي numStream . اهو وهڪرو مان نقلن کي هٽائڻ سان numList ۾ سڀني انفرادي عناصر کي ٻيهر حاصل ڪري ٿو . جئين توھان ٻاھرين مان ڏسي سگھو ٿا، ڪو به نقل نه آھن، ان پٽ اسٽريم جي برعڪس، جنھن جي شروعات ۾ ٻه نقل آھن (63 ۽ 1).

جھلڪ ()

اهو طريقو استعمال ڪيو ويندو آهي وچولي تبديلين کي ٽريڪ ڪرڻ لاءِ ٽرمينل آپريشن کي هلائڻ کان اڳ. هن جو مطلب اهو آهي ته peek() استعمال ڪري سگهجي ٿو هڪ آپريشن انجام ڏيڻ لاءِ هڪ اسٽريم جي هر عنصر تي هڪ وهڪرو ٺاهڻ لاءِ جنهن تي وڌيڪ وچولي آپريشن ڪري سگهجي ٿو.
Stream<Integer> numStream = Stream.of(43, 65, 1, 98, 63); List<Integer> nList = numStream.map(n -> n*10) .peek(n->System.out.println("Mapped: "+ n)) .collect(Collectors.toList()); System.out.println(nList);
نتيجو:
ميپ ٿيل: 430 ميپڊ: 650 ميپڊ: 10 ميپڊ: 980 ميپڊ: 630 [430، 650، 10، 980، 630]
وضاحت: هتي وچولي نتيجا پيدا ڪرڻ لاءِ peek() طريقو استعمال ڪيو ويندو آهي جيئن نقشو() طريقو وهڪرو جي عنصرن تي لاڳو ڪيو ويندو آهي. هتي اسان اهو نوٽ ڪري سگهون ٿا ته پرنٽ بيان ۾ لسٽ جي آخري مواد کي پرنٽ ڪرڻ لاء گڏ ڪرڻ () ٽرمينل آپريشن کي استعمال ڪرڻ کان اڳ ، هر وهڪرو عنصر ميپنگ جو نتيجو اڳ ۾ ترتيب سان ڇپيل آهي.

ترتيب ڏنل()

ترتيب ڏنل () طريقو استعمال ڪيو ويندو آھي ھڪڙي وهڪرو جي عناصر کي ترتيب ڏيڻ لاء. ڊفالٽ طور، اهو ترتيب ڏئي ٿو عناصر کي ترتيب ڏيڻ ۾. توھان پڻ وضاحت ڪري سگھو ٿا ھڪڙي مخصوص ترتيب واري آرڊر کي پيٽرولر جي طور تي. ھن طريقي جو ھڪڙو مثال ھن طرح نظر اچي ٿو:
Stream<Integer> numStream = Stream.of(43, 65, 1, 98, 63); numStream.sorted().forEach(n -> System.out.println(n));
نتيجو:
1 43 ​​63 65 98
وضاحت: هتي، ترتيب ڏنل () طريقو استعمال ڪيو ويندو آهي وهڪري جي عناصرن کي ترتيب ڏيڻ لاءِ ترتيب ڏنل ترتيب سان (ڇاڪاڻ ته ڪو خاص ترتيب بيان نه ڪيو ويو آهي). توھان ڏسي سگھوٿا ته آئوٽ پٽ ۾ ڇپيل شيون مٿي چڙھيل ترتيب سان ترتيب ڏنل آھن.

ٽرمينل آپريشن

هتي ڪجھ ٽرمينل آپريشن جا ڪجھ مثال آھن جيڪي جاوا اسٽريمز تي لاڳو ڪري سگھجن ٿيون:

هر هڪ لاءِ()

forEach() طريقو استعمال ڪيو ويندو آھي ورجائڻ لاءِ ھڪڙي اسٽريم جي سڀني عنصرن جي ذريعي ۽ عمل کي عمل ڪرڻ لاءِ ھر عنصر تي ھڪڙي ھڪڙي. هي لوپ بيانن جي متبادل طور ڪم ڪري ٿو جهڙوڪ لاء ، جڏهن ۽ ٻيا. مثال:
Stream<Integer> numStream = Stream.of(43, 65, 1, 98, 63); numStream.forEach(n -> System.out.println(n));
نتيجو:
43 65 1 98 63
تشريح: هتي forEach() طريقو استعمال ڪيو ويندو آهي هر عنصر کي هڪ هڪ ڪري پرنٽ ڪرڻ لاءِ.

شمار()

ڳڻپ () طريقو استعمال ڪيو ويندو آهي ريٽ ۾ موجود عناصر جي ڪل تعداد کي ٻيهر حاصل ڪرڻ لاءِ. اهو سائيز () طريقي سان ملندڙ جلندڙ آهي ، جيڪو اڪثر ڪري مجموعي ۾ عناصر جي مجموعي تعداد کي طئي ڪرڻ لاء استعمال ڪيو ويندو آهي. جاوا اسٽريم سان ڳڻپ () طريقو استعمال ڪرڻ جو ھڪڙو مثال ھيٺ ڏنل آھي:
Stream<Integer> numStream = Stream.of(43, 65, 1, 98, 63); System.out.println(numStream.count());
نتيجو:
5
وضاحت: جيئن ته numStream 5 انٽيجر عناصر تي مشتمل آهي، ان تي ڳڻپ() طريقو استعمال ڪندي 5 آئوٽ ڪندو.

گڏ ()

گڏ ڪرڻ () طريقو استعمال ڪيو ويندو آهي وهڪرو عناصر جي ميوٽيڪل گهٽتائي کي انجام ڏيڻ لاء. اهو پروسيسنگ مڪمل ٿيڻ کان پوء هڪ وهڪرو مان مواد کي هٽائڻ لاء استعمال ڪري سگهجي ٿو. اهو استعمال ڪري ٿو ڪليڪٽر ڪلاس کي گهٽائڻ لاءِ .
Stream<Integer> numStream = Stream.of(43, 65, 1, 98, 63); List<Integer> odd = numStream.filter(n -> n % 2 == 1) .collect(Collectors.toList()); System.out.println(odd);
نتيجو:
[43، 65، 1، 63]
وضاحت: هن مثال ۾، وهڪري ۾ سڀ بي ترتيب عناصر فلٽر ڪيا ويا آهن ۽ گڏ ڪيل/گهٽائي هڪ فهرست ۾ odd . آخر ۾، بي ترتيب جي هڪ فهرست ڇپيل آهي.

منٽ () ۽ وڌ ۾ وڌ ()

min() طريقو ، جيئن نالو تجويز ڪري ٿو، ان ۾ گھٽ ۾ گھٽ عنصر ڳولڻ لاءِ اسٽريم تي استعمال ٿي سگھي ٿو. اهڙي طرح، وڌ ۾ وڌ عنصر ڳولڻ لاء max() طريقو استعمال ڪري سگھجي ٿو وهڪرو ۾. اچو ته اهو سمجهڻ جي ڪوشش ڪريون ته اهي ڪيئن استعمال ڪري سگهجن ٿا مثال سان:
Stream<Integer> numStream = Stream.of(43, 65, 1, 98, 63); int smallest = numStream.min((m, n) -> Integer.compare(m, n)).get(); System.out.println("Smallest element: " + smallest);
numStream = Stream.of(43, 65, 1, 98, 63); int largest = numStream.max((m, n) -> Integer.compare(m, n)).get(); System.out.println("Largest element: " + largest);
نتيجو:
ننڍو عنصر: 1 سڀ کان وڏو عنصر: 98
وضاحت: هن مثال ۾، اسان numStream ۾ سڀ کان ننڍڙو عنصر min () طريقي سان استعمال ڪندي ۽ سڀ کان وڏو عنصر max() طريقو استعمال ڪندي پرنٽ ڪيو . نوٽ ڪريو ته هتي، max() طريقو استعمال ڪرڻ کان اڳ ، اسان numStream ۾ عناصر شامل ڪيا آھن . اهو ئي سبب آهي ته min() هڪ ٽرمينل آپريشن آهي ۽ اصل وهڪري جي مواد کي تباهه ڪري ٿو، صرف آخري نتيجو موٽائي ٿو (جيڪو هن صورت ۾ انٽيجر "ننڍو" هو).

FindAny() ۽ FindFirst()

findAny() وهڪرو جي ڪنهن به عنصر کي اختياري طور تي واپس ڪري ٿو . جيڪڏهن وهڪرو خالي آهي، اهو پڻ واپس ڏيندو هڪ اختياري قدر ، جيڪو خالي هوندو. findFirst() اسٽريم جو پهريون عنصر واپس ڏئي ٿو جيئن اختياري . جيئن findAny() طريقي سان ، findFirst() طريقو به هڪ خالي اختياري پيٽرول واپس ڏئي ٿو جيڪڏهن لاڳاپيل وهڪرو خالي آهي. اچو ته انهن طريقن جي بنياد تي هيٺ ڏنل مثال تي نظر رکون:
Stream<Integer> numStream = Stream.of(43, 65, 1, 98, 63); Optional<Integer> opt = numStream.findFirst();System.out.println(opt); numStream = Stream.empty(); opt = numStream.findAny();System.out.println(opt);
نتيجو:
اختياري[43] Optional.empty
وضاحت: هتي، پهرين صورت ۾، findFirst() طريقو وهڪرو جي پهرين عنصر کي اختياري طور تي واپس ڪري ٿو . پوءِ، جڏهن ٿريڊ کي خالي ٿريڊ جي طور تي ٻيهر تفويض ڪيو ويو آهي، findAny() طريقو هڪ خالي اختياري واپس ڏئي ٿو .

allMatch() , anyMatch() and noneMatch()

allMatch() طريقو استعمال ڪيو ويندو آهي چيڪ ڪرڻ لاءِ ته ڇا ڪنهن وهڪري ۾ موجود سڀئي عنصر هڪ خاص اڳڪٿي سان ملن ٿا ۽ جيڪڏهن اهي ڪن ٿا ته بوليان ويل سچي موٽائي ٿو، ٻي صورت ۾ غلط موٽائي ٿو . جيڪڏهن وهڪرو خالي آهي، اهو صحيح موٽائي ٿو . AnyMatch() طريقو استعمال ڪيو ويندو آهي چيڪ ڪرڻ لاءِ ته ڇا ڪنهن وهڪري ۾ موجود عنصرن مان هڪ خاص اڳڪٿي سان ملي ٿي. اهو واپس اچي ٿو صحيح ، ٻي صورت ۾ غلط . جيڪڏهن وهڪرو خالي آهي، اهو غلط موٽائي ٿو . noneMatch() طريقو صحيح موٽائي ٿو جيڪڏهن وهڪرو ۾ ڪوبه عنصر اڳڪٿي سان نه ٿو ملي، ۽ ٻي صورت ۾ غلط . هن کي بيان ڪرڻ لاء هڪ مثال هن طرح نظر اچي ٿو:
Stream<Integer> numStream = Stream.of(43, 65, 1, 98, 63); boolean flag = numStream.allMatch(n -> n1); System.out.println(flag); numStream = Stream.of(43, 65, 1, 98, 63); flag = numStream.anyMatch(n -> n1); System.out.println(flag); numStream = Stream.of(43, 65, 1, 98, 63); flag = numStream.noneMatch(n -> n==1);System.out.println(flag);
نتيجو:
ڪوڙ سچ ڪوڙ
وضاحت: هڪ اسٽريم numStream لاءِ جنهن ۾ 1 عنصر شامل آهي، allMatch() طريقو غلط موٽائي ٿو ڇاڪاڻ ته سڀئي عنصر 1 نه آهن، پر انهن مان صرف هڪ آهي. anyMatch() طريقو صحيح ٿو موٽائي ڇو ته عنصرن مان گھٽ ۾ گھٽ ھڪڙو آھي 1. noneMatch() طريقو غلط موٽندو آھي ڇاڪاڻ ته 1 اصل ۾ ھن نديءَ ۾ عنصر طور موجود آھي.

جاوا اسٽريم ۾ سست تشخيص

سست تشخيص جاوا 8 ۾ جاوا اسٽريمز سان ڪم ڪرڻ دوران اصلاحن جو سبب بڻجندي آهي. اهي خاص طور تي وچولي آپريشن کي دير ڪرڻ ۾ شامل آهن جيستائين ٽرمينل آپريشن سامهون نه اچي. سست تشخيص حسابن تي وسيلن جي غير ضروري فضول کي روڪڻ جي ذميوار آهي جيستائين نتيجو اصل ۾ گهربل هجي. وچولي عملن جي نتيجي ۾ ٻاھر نڪرڻ وارو وهڪرو صرف ٽرمينل آپريشن مڪمل ٿيڻ کان پوء ٺاھيو ويندو آھي. سست تشخيص جاوا اسٽريمز ۾ سڀني وچولي عملن سان ڪم ڪري ٿو. سست تشخيص جو هڪ تمام مفيد استعمال ٿئي ٿو جڏهن لامحدود اسٽريمز سان ڪم ڪندي. اهو طريقو، تمام گهڻو غير ضروري پروسيسنگ کي روڪيو ويو آهي.

جاوا اسٽريم ۾ پائپ لائنون

جاوا اسٽريم ۾ هڪ پائپ لائن هڪ ان پٽ اسٽريم تي مشتمل آهي، صفر يا وڌيڪ وچولي آپريشن هڪ ٻئي پٺيان قطار ۾، ۽ آخرڪار هڪ ٽرمينل آپريشن. جاوا اسٽريمز ۾ وچولي آپريشن سستي سان ڪيا ويندا آهن. هي پائپ لائن وچولي آپريشن کي ناگزير بڻائي ٿو. پائپ لائنز سان، جيڪي بنيادي طور تي وچولي عملن کي ترتيب ۾ گڏيل آهن، سست عمل ممڪن ٿي سگهي ٿو. پائپ لائنز وچولي آپريشن جي ٽريڪ رکڻ ۾ مدد ڪن ٿيون جيڪي ٽرمينل آپريشن جي آخر ۾ سامهون اچڻ کان پوء انجام ڏيڻ جي ضرورت آهي.

نتيجو

اچو ته ھاڻي اختصار ڪريون ته اڄ اسان ڇا سکيو آھي. هن آرٽيڪل ۾:
  1. اسان هڪ تڪڙو نظر ورتو ته جاوا اسٽريمز ڇا آهن.
  2. اسان پوءِ جاوا 8 ۾ جاوا ٿريڊ ٺاهڻ لاءِ ڪيتريون ئي مختلف ٽيڪنالاجيون سکيون.
  3. اسان سکيا جا ٻه مکيه قسم جا آپريشن (انٽرميڊيٽ آپريشنز ۽ ٽرمينل آپريشنز) جيڪي جاوا اسٽريمز تي ڪري سگھجن ٿا.
  4. اسان پوءِ تفصيل سان ڏٺوسين ٻنهي وچولي ۽ ٽرمينل آپريشنز جي ڪيترن ئي مثالن تي.
  5. اسان سست تشخيص جي باري ۾ وڌيڪ سکڻ ختم ڪيو ۽ آخرڪار جاوا سلسلي ۾ پائپ لائننگ بابت سکيا.
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION