لیمبڈاس
اگر آپ نہیں جانتے کہ لیمبڈا بالکل کیا ہے، تو: ایک لیمبڈا اس طرح لگتا ہے:(a, b) -> a.compareTo(b)
(переменные) -> действие
ابھی کے لیے اتنا ہی کافی ہے۔ آپ تھیوری کو یہاں پڑھ سکتے ہیں: لنک ایک ، لنک دو ، لیکن میرے خیال میں مشق زیادہ مزے کی ہے۔ میرا مشورہ ہے کہ آپ درج ذیل مسئلہ کو حل کریں: طریقہ 1 کا استعمال کرتے ہوئے ایک کیلکولیٹر لکھیں۔ طریقہ کو 2 ڈیجیٹل اقدار اور کچھ اور قبول کرنا چاہئے۔ آپ کا کوڈ کچھ اس طرح نظر آئے گا:
class Lambda{
public static void main (String[] args) {
}
public static double calculate(){
return null;
}
}
آپ کو طریقہ کے دستخط میں 3 پیرامیٹرز درج کرنے کی ضرورت ہے calculate
، 1 کمانڈ شامل کریں return
اور اس طریقہ کو کال کرنے کی جانچ کریں main
۔ یہ طریقہ کیا کرنے کے قابل ہونا چاہئے؟
- گنا
- ضرب؛
- تقسیم
- گھٹانا
- جڑ کا حساب لگائیں؛
- ایک طاقت میں اضافہ؛
- پہلے نمبر + 117 سے تقسیم ہونے والے دلائل کے مجموعے کو طاقت تک بڑھانا؛
- اور تمام دیگر آپریشنز جن کے بارے میں آپ سوچ سکتے ہیں۔
if-else
;char
آپریشن کے اشارے کے طور پر؛switch-case
;- اور ہر وہ چیز جو آپ کے ذہن میں آتی ہے۔
- صرف لیمبڈاس، کام ان پر ہے۔
inputStream
اور یہ نہیں ہے OutputStream
۔ یہ مختلف ہے، یہ زیادہ دلچسپ ہے۔ ندیوں نے سائیکلوں کی جگہ لے لی ہے، مکمل طور پر نہیں، لیکن پھر بھی۔ انہیں اس نعرے کے ساتھ پیش کیا جاتا ہے کہ "یہ نہ بتائیں کہ یہ کیسے کرنا ہے، کیا کرنا ہے"۔ ندی کی ایک چھوٹی سی مثال:
List<String> myList = Arrays.asList("a1", "a2", "b1", "c2", "c1");
myList.stream()
.filter(s -> s.startsWith("c"))
.map(String::toUpperCase)
.sorted()
.forEach(System.out::println);
یہاں کیا ہو رہا ہے؟ آئیے تبصرے شامل کریں:
myList.stream() // получить поток
.filter(s -> s.startsWith("c")) //отфильтровать значения, оставить те, что начинаются с «с»
.map(String::toUpperCase) // преобразовать все значения, перевести в верхний регистр
.sorted() // отсортировать по порядку (дефолтный порядо)
.forEach(System.out::println); // вывести каждый элемент на экран
باقاعدہ لوپ کے ساتھ موازنہ کریں:
List<String> toSort = new ArrayList<>();
for(String s : myList){
if(s.startsWith("c")){
toSort.add(s.toUpperCase());
}
}
Collections.sort(toSort);
for(String s : toSort){
System.ouy.println(s);
}
جب آپ کوڈ پڑھتے ہیں، تو سب کچھ خوفناک لگتا ہے، لیکن کیا تبصرے کے ساتھ یہ آسان ہے؟ یہ عام بات ہے، میں بھی انہیں کافی دیر تک سمجھ نہیں پایا۔ سمجھنے کی کلید مشق ہے۔ اس لیے، ہم فریق ثالث کے مضامین پڑھنا شروع کر دیتے ہیں اور اپنے سوالات کے جوابات تلاش کرتے ہیں، آپ انہیں یہاں کمنٹس میں بھی پوچھ سکتے ہیں، میں پورا جواب نہیں دوں گا، لیکن سمت بتاؤں گا۔ JavaRush کے کاموں کی فہرست جو میرے خیال میں اسٹریمنگ کی مشق کرنے کے لیے بہترین ہیں:
-
2208 - 1 سٹریم اور 1 ریٹرن کے ساتھ حل کیا جا سکتا ہے، یعنی طریقہ کار کی باڈی اس کے ساتھ شروع ہوگی
return
اور پھر 1 پورا سلسلہ ہوگا۔ آئیے ضرورت کو چھوڑ دیںStringBuilder
۔ -
1908 - آپ اسے 1 سٹریم اور 1 ریٹرن کے ساتھ بھی حل کر سکتے ہیں۔ فائل کو پڑھنے کے ساتھ شروع کرنا۔ میں نہیں جانتا کہ اسٹریمز کے ذریعے فائل میں کیسے ریکارڈ کیا جائے (اگر یہ ممکن ہو)، جب کہ ہم اسے دستی طور پر کرتے ہیں۔ وہ. ہم صرف 2 اسٹریمز کھولتے ہیں (کنسول اور فائل میں لکھنا)۔ ہم فائل کو ان طریقوں کے ذریعے پڑھتے ہیں جو ہمیں یا تو شیٹ یا اسٹریم (گوگل اور جاواڈاک) واپس کردیں گے۔
-
1907 - نظریہ میں، یہ بھی ایک ندی میں حل کیا جا سکتا ہے. سٹریم میں ان پٹ فائل کا نام ہے، آؤٹ پٹ الفاظ کی دنیا کی تعداد ہے۔
-
1016 - قدرے بگڑے ہوئے طریقے سے، آپ اسے 1 سلسلہ اور 1 واپسی میں حل کر سکتے ہیں۔
-
1821 - بہت آسان اور 1 سلسلہ اور 1 واپسی میں۔
یہ 2 کام آپ کو ایک اور سٹریمنگ طریقہ اور دوسرے کلکٹر سے متعارف کرائیں گے۔
-
1925 - آپ ایک سٹریم میں الفاظ کے ساتھ ایک سطر حاصل کر سکتے ہیں اور پھر اسے فائل میں لکھ سکتے ہیں (مجھے نہیں معلوم کہ کسی سٹریم سے فائل پر لکھنا ممکن ہے یا نہیں)
GO TO FULL VERSION