جاوا اسٹریمز بیگینرز کے لیے: جاوا میں اسٹریمز کے استعمال کا تعارف۔

جاوا اسٹریمز بیگینرز کے لیے: جاوا میں اسٹریمز کے استعمال کا تعارف۔

جاوا 8 اسٹریمز ڈویلپرز کو پہلے سے طے شدہ آپریشنز کے ایک سیٹ کا استعمال کرتے ہوئے بڑے ذخیرے سے درست ڈیٹا نکالنے کی اجازت دیتے ہیں۔





جاوا 8 کی ریلیز سے پہلے ، جاوا میں اصطلاح 'سٹریم' کا استعمال خود بخود I/O کے ساتھ منسلک ہو جائے گا۔ تاہم ، جاوا 8 نے ایک سٹریم متعارف کرایا جسے کمپیوٹیشنل مراحل کا ایک مجموعہ کہا جا سکتا ہے جسے ایک ساتھ جکڑا جاتا ہے جسے عام طور پر 'سٹریم پائپ لائن' کہا جاتا ہے۔





یہ مضمون آپ کو جاوا 8 اسٹریمز سے متعارف کرائے گا اور ظاہر کرے گا کہ وہ آپ کے پروجیکٹس میں کس طرح کارآمد ثابت ہو سکتے ہیں۔





ایک ندی کیا ہے؟

ایک سٹریم ایک جاوا انٹرفیس ہے جو ایک سورس لیتا ہے ، مخصوص ڈیٹا نکالنے کے لیے آپریشنز کا ایک سیٹ چلاتا ہے ، پھر وہ ڈیٹا ایپلی کیشن کو استعمال کے لیے فراہم کرتا ہے۔ بنیادی طور پر ، یہ آپ کو عام ڈیٹا کے مجموعے سے خصوصی ڈیٹا نکالنے کی اجازت دیتا ہے۔

اسٹریمز کیسے کام کرتی ہیں۔

سٹریم پائپ لائن ہمیشہ ایک ذریعہ سے شروع ہوتی ہے۔ ماخذ کی قسم کا انحصار اس قسم کے ڈیٹا پر ہوتا ہے جس کے ساتھ آپ کام کر رہے ہیں ، لیکن دو میں سے زیادہ مشہور ہیں صفیں اور مجموعے۔



مجموعہ کو ابتدائی سلسلہ میں تبدیل کرنے کے لیے ، آپ کو شامل کرنے کی ضرورت ہوگی۔ ندی() ماخذ پر کام یہ ذریعہ کو اسٹریم پائپ لائن میں ڈالے گا جہاں کئی مختلف انٹرمیڈیٹ آپریشنز (جیسے۔ فلٹر () اور ترتیب دیں() ) اس پر کام کر سکتے ہیں۔

تمام مطلوبہ انٹرمیڈیٹ آپریشن کئے جانے کے بعد ، آپ ٹرمینل آپریشن متعارف کروا سکتے ہیں (جیسے۔ ہر ایک کے لئے() ) ، جو ماخذ سے پہلے نکالا ہوا ڈیٹا تیار کرے گا۔





ندیوں کے بغیر زندگی۔

جاوا 8 2014 میں جاری کیا گیا تھا ، لیکن اس سے پہلے ، جاوا ڈویلپرز کو اب بھی عام ڈیٹا کے مجموعے سے خصوصی ڈیٹا نکالنے کی ضرورت ہے۔

میری ہارڈ ڈرائیو تک کیا رسائی ہے

آئیے کہتے ہیں کہ آپ کے پاس بے ترتیب حروف کی ایک فہرست ہے جو بے ترتیب نمبروں کے ساتھ مل کر منفرد سٹرنگ ویلیوز بناتی ہے ، لیکن آپ صرف وہ اقدار چاہتے ہیں جو حرف C سے شروع ہوتی ہیں اور آپ نتائج کو بڑھتے ہوئے ترتیب میں ترتیب دینا چاہتے ہیں۔ اس طرح آپ اس ڈیٹا کو بغیر دھاروں کے نکالیں گے۔





متعلقہ: جاوا میں سٹرنگ استعمال کرنے کے بارے میں آپ کو کیا جاننے کی ضرورت ہے۔

نہروں کے بغیر اقدار کو چھاننا اور چھانٹنا مثال۔


import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
//declare and initialize the array list
List randomValues = Arrays.asList(
'E11', 'D12', 'A13', 'F14', 'C15', 'A16',
'B11', 'B12', 'C13', 'B14', 'B15', 'B16',
'F12', 'E13', 'C11', 'C14', 'A15', 'C16',
'F11', 'C12', 'D13', 'E14', 'D15', 'D16'
);
//declare the array list will store needed values
List requiredValues = new ArrayList();
//extracting the required values and storing them in reqquiredValues
randomValues.forEach(value -> {
if(value.startsWith('C')) {
requiredValues.add(value);
}
});
//sort the requiredValues in ascending order
requiredValues.sort((String value1, String value2) -> value1.compareTo(value2));
//print each value to the console
requiredValues.forEach((String value) -> System.out.println(value));
}
}

آپ کو صف کی فہرست کا اعلان اور ابتدا کرنے کی بھی ضرورت ہوگی چاہے آپ اسٹریم استعمال کر رہے ہوں یا نکالنے کا کوئی دوسرا طریقہ۔ اگر آپ اسٹریمز استعمال کر رہے تھے تو آپ کو کیا کرنے کی ضرورت نہیں ہوگی ، مطلوبہ اقدار کو برقرار رکھنے کے لیے ایک نئے متغیر کا اعلان کریں ، اور نہ ہی اوپر کی مثال میں کوڈ کی دیگر پانچ جمع لائنیں بنائیں۔

متعلقہ: جاوا میں Arrays پر آپریشن بنانے اور انجام دینے کا طریقہ

مندرجہ بالا کوڈ کنسول میں درج ذیل آؤٹ پٹ تیار کرتا ہے۔


C11
C12
C13
C14
C15
C16

ندیوں کے ساتھ زندگی۔

پروگرامنگ میں ، کارکردگی نمایاں طور پر کم کوڈ کے ساتھ ایک ہی نتیجہ پیدا کرنے کی بات کرتی ہے۔ یہ بالکل وہی ہے جو ایک سٹریم پائپ لائن ایک پروگرامر کے لیے کرتی ہے۔ تو اگلی بار جب کوئی پوچھتا ہے: اپنے پروجیکٹ میں اسٹریمز کا استعمال کیوں ضروری ہے؟ سیدھے الفاظ میں: اسٹریمز موثر پروگرامنگ کی حمایت کرتی ہیں۔

ہماری اوپر کی مثال کے ساتھ جاری رکھتے ہوئے ، اس طرح اسٹریمز متعارف کروانا پورے پروگرام کو بدل دیتا ہے۔

ایک سلسلہ مثال کے ساتھ اقدار کو چھاننا اور ترتیب دینا۔


import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
//declare and initialize the array list
List randomValues = Arrays.asList(
'E11', 'D12', 'A13', 'F14', 'C15', 'A16',
'B11', 'B12', 'C13', 'B14', 'B15', 'B16',
'F12', 'E13', 'C11', 'C14', 'A15', 'C16',
'F11', 'C12', 'D13', 'E14', 'D15', 'D16'
);
//retrieves only values that start with C, sort them, and print them to the console.
randomValues.stream().filter(value->value.startsWith('C')).sorted().forEach(System.out::println);
}
}

مندرجہ بالا کوڈ ظاہر کرتا ہے کہ اسٹریم انٹرفیس کتنا طاقتور ہے۔ یہ بے ترتیب صف کی اقدار کی ایک فہرست لیتا ہے اور اسے اسٹریم میں تبدیل کرتا ہے ندی() فنکشن اسٹریم کو پھر ایک صف کی فہرست میں گھٹا دیا جاتا ہے جس میں مطلوبہ اقدار ہوتی ہیں (جو کہ تمام اقدار سے شروع ہوتی ہیں۔ ج۔ )، کا استعمال کرتے ہوئے فلٹر () فنکشن

جیسا کہ آپ اوپر کی مثال میں دیکھ سکتے ہیں ، ج۔ اقدار کو تصادفی طور پر صف کی فہرست میں ترتیب دیا گیا ہے۔ اگر آپ پائپ لائن میں اس مقام پر اسٹریم کو پرنٹ کرنا چاہتے ہیں تو قیمت۔ سی 15۔ پہلے چھاپا جائے گا لہذا ، ترتیب دیں() اسٹریم پائپ لائن میں فنکشن متعارف کرایا گیا ہے تاکہ نئی صف کو بڑھتے ہوئے ترتیب میں دوبارہ ترتیب دیا جائے۔

اسٹریم پائپ لائن میں آخری فنکشن ایک ہے۔ ہر ایک کے لئے() فنکشن یہ ایک ٹرمینل فنکشن ہے جو اسٹریم پائپ لائن کو روکنے کے لیے استعمال ہوتا ہے اور کنسول میں درج ذیل نتائج پیدا کرتا ہے۔


C11
C12
C13
C14
C15
C16

اسٹریم انٹرمیڈیٹ آپریشنز۔

انٹرمیڈیٹ آپریشنز کی ایک وسیع فہرست ہے جو اسٹریم پائپ لائن میں استعمال کی جا سکتی ہے۔

ایک سٹریم پائپ لائن ہمیشہ ایک ذریعہ اور a سے شروع ہوتی ہے۔ ندی() فنکشن ، اور ہمیشہ ایک ٹرمینل آپریشن کے ساتھ ختم ہوتا ہے (حالانکہ منتخب کرنے کے لیے کئی مختلف ہیں۔) لیکن ان دونوں حصوں کے درمیان چھ انٹرمیڈیٹ آپریشنز کی ایک فہرست ہے جسے آپ استعمال کر سکتے ہیں۔

ہماری اوپر کی مثال میں ، ان میں سے صرف دو انٹرمیڈیٹ آپریشن استعمال ہوتے ہیں --- فلٹر () اور ترتیب دیں() . آپ جو انٹرمیڈیٹ آپریشن کرتے ہیں اس کا انحصار ان کاموں پر ہوگا جو آپ انجام دینا چاہتے ہیں۔

اگر ہماری صفوں کی فہرست میں C سے شروع ہونے والی اقدار میں سے کوئی بھی لوئر کیس میں تھا ، اور ہم نے ان پر وہی انٹرمیڈیٹ آپریشن کیا تو ہمیں مندرجہ ذیل نتیجہ ملے گا۔

لوئر کیس ویلیوز پر فلٹر اور سٹرنگ آپریشنز انجام دینا۔


import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
//declare and initialize the array list
List randomValues = Arrays.asList(
'E11', 'D12', 'A13', 'F14', 'C15', 'A16',
'B11', 'B12', 'c13', 'B14', 'B15', 'B16',
'F12', 'E13', 'C11', 'C14', 'A15', 'c16',
'F11', 'C12', 'D13', 'E14', 'D15', 'D16'
);
//retrieves only values that start with C, sort them, and print them to the console.
randomValues.stream().filter(value->value.startsWith('C')).sorted().forEach(System.out::println);
}
}

مندرجہ بالا کوڈ کنسول میں درج ذیل اقدار پیدا کرے گا:


C11
C12
C14
C15

مندرجہ بالا آؤٹ پٹ کے ساتھ واحد مسئلہ یہ ہے کہ یہ درست طریقے سے تمام کی نمائندگی نہیں کرتا ہے۔ ج۔ ہماری صف کی فہرست میں اقدار۔ اس چھوٹی سی خرابی کو دور کرنے کا ایک اچھا طریقہ یہ ہے کہ اسٹریم پائپ لائن میں ایک اور انٹرمیڈیٹ آپریشن متعارف کرایا جائے۔ یہ آپریشن کے طور پر جانا جاتا ہے نقشہ () فنکشن

میپ فنکشن کی مثال کا استعمال کرتے ہوئے۔


import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
//declare and initialize the array list
List randomValues = Arrays.asList(
'E11', 'D12', 'A13', 'F14', 'C15', 'A16',
'B11', 'B12', 'c13', 'B14', 'B15', 'B16',
'F12', 'E13', 'C11', 'C14', 'A15', 'c16',
'F11', 'C12', 'D13', 'E14', 'D15', 'D16'
);
//transforms all lower case characters to upper case,
//retrieves only values that start with C, sort them, and print them to the console.
randomValues.stream().map(String::toUpperCase).filter(value->value.startsWith('C')).sorted().forEach(System.out::println);
}
}

کی نقشہ () فنکشن کسی چیز کو ایک حالت سے دوسری حالت میں بدل دیتا ہے۔ ہماری اوپر کی مثال میں یہ صف کی فہرست کے تمام چھوٹے حروف کو بڑے حروف میں تبدیل کرتا ہے۔

رکھنا نقشہ () سے پہلے کام کریں فلٹر () فنکشن ان تمام اقدار کو بازیافت کرتا ہے جو شروع ہوتے ہیں۔ ج۔ صف کی فہرست سے.

مندرجہ بالا کوڈ کنسول میں درج ذیل نتیجہ پیدا کرتا ہے ، کامیابی سے تمام کی نمائندگی کرتا ہے۔ ج۔ صف کی فہرست میں اقدار۔


C11
C12
C13
C14
C15
C16

دیگر تین انٹرمیڈیٹ آپریشن جو آپ اپنی درخواستوں میں استعمال کر سکتے ہیں ان میں شامل ہیں:

  • جھانکنا ()
  • حد ()
  • چھوڑ دو()

جاوا 8 اسٹریمز موثر کوڈ بنانے میں سہولت فراہم کرتی ہیں۔

جاوا 8 اسٹریمز کے ذریعے آپ کوڈ کی ایک لائن کے ساتھ ایک بڑے سورس سے اضافی مخصوص ، متعلقہ ڈیٹا نکال سکتے ہیں۔ جب تک آپ ابتدائی شامل کریں۔ ندی() فنکشن اور ٹرمینل آپریٹر ، آپ انٹرمیڈیٹ آپریشنز کا کوئی بھی مجموعہ استعمال کر سکتے ہیں جو آپ کے ہدف کے لیے فٹنگ آؤٹ پٹ فراہم کرتا ہے۔

ایپس ایس ڈی کارڈ میں منتقل نہیں ہوں گی۔

اگر آپ ہمارے اندر بند کوڈ کی لائن کے بارے میں سوچ رہے ہیں۔ فلٹر () فنکشن؛ اسے 'لیمبڈا ایکسپریشن' کہا جاتا ہے۔ لیمبڈا ایکسپریشنز ایک اور خصوصیت ہے جو جاوا 8 کے ساتھ متعارف کروائی گئی ہے ، اور اس میں بہت سارے گلے ہیں جو آپ کو کارآمد معلوم ہوسکتے ہیں۔

بانٹیں بانٹیں ٹویٹ ای میل۔ جاوا 8 لیمبڈاس کا فوری تعارف۔

اگر آپ جاوا پروگرامر ہیں اور آپ جاوا 8 لیمبڈاس کے بارے میں مزید جاننے میں دلچسپی رکھتے ہیں تو ، اس مضمون میں ہم لیمبڈا نحو اور استعمال کو قریب سے دیکھیں گے۔

اگلا پڑھیں۔
متعلقہ موضوعات۔
  • پروگرامنگ۔
  • جاوا
  • کوڈنگ ٹیوٹوریل
مصنف کے بارے میں کدیشا کیان۔(21 مضامین شائع ہوئے)

کدیشا کین ایک مکمل اسٹیک سافٹ ویئر ڈویلپر اور ٹیکنیکل/ٹیکنالوجی رائٹر ہیں۔ وہ کچھ انتہائی پیچیدہ تکنیکی تصورات کو آسان بنانے کی الگ صلاحیت رکھتی ہے۔ ایسا مواد تیار کرنا جسے کسی بھی ٹیکنالوجی کے نوآموز آسانی سے سمجھ سکیں۔ وہ لکھنے ، دلچسپ سافٹ ویئر تیار کرنے ، اور دنیا کا سفر کرنے کے بارے میں پرجوش ہے (دستاویزی فلموں کے ذریعے)

Kadeisha Kean سے مزید

ہماری نیوز لیٹر کو سبسکرائب کریں

ٹیک ٹپس ، جائزے ، مفت ای بکس ، اور خصوصی سودوں کے لیے ہمارے نیوز لیٹر میں شامل ہوں!

سبسکرائب کرنے کے لیے یہاں کلک کریں۔