JavaRush /جاوا بلاگ /Random-SD /لکڻ جو سلسلو بند ڪريو! جاوا 8 مان گڏ ڪرڻ سان ڪم ڪرڻ لاء م...

لکڻ جو سلسلو بند ڪريو! جاوا 8 مان گڏ ڪرڻ سان ڪم ڪرڻ لاء مٿي 10 بهترين طريقا

گروپ ۾ شايع ٿيل
منهنجو خيال آهي ته JavaRush شاگردن کي وضاحت ڪرڻ جي ڪا ضرورت ناهي ته مجموعا ڇا آهن ۽ اهي ڇا لاءِ آهن. بهرحال، 8 هين ورزن جي ڇڏڻ کان پوء، ڪيترائي ابتدائي عمل، جيڪي اڳ ۾ ڪوڊ جون 6-7 لائينون وٺي رهيا هئا، گهٽ ۾ گهٽ آسان ٿي ويا. بغير ڪنهن اشتهار جي، هتي آهن مٿيان 10 بهترين Java8 ڪليڪشن فريم ورڪ ٽيڪنڪ جيڪي توهان جي وقت ۽ جاءِ کي بچائينديون! لکڻ جو سلسلو بند ڪريو!  جاوا 8 - 1 کان مجموعن سان ڪم ڪرڻ لاء مٿي 10 بهترين طريقاسڀني کي سلام، دوستو! عادت، جيئن توهان کي خبر آهي، ٻي فطرت آهي. ۽ لکڻ جي عادت پئجي وئي، for (int i = 0; i <......)مان ان کي ٻيهر سکڻ نه ٿو چاهيان (خاص طور تي جڏهن ته هي ڊزائن بلڪل سادو ۽ سمجھڻ وارو آهي). بهرحال، لوپس جي اندر اسين اڪثر ساڳيا ابتدائي عملن کي ورجائيندا آهيون، جن جي ورجائي اسان واقعي کان نجات حاصل ڪرڻ چاهيندا آهيون. Java8 جي ڇڏڻ سان، Oracle اسان جي مدد ڪرڻ جو فيصلو ڪيو. هيٺيان 10 بهترين گڏ ڪرڻ جا طريقا آهن جيڪي توهان کي وقت ۽ ڪوڊ جي هڪ ٽين بچائيندا.

1. Iterable.forEach(صارفي<؟ سپر T> عمل)

نالو پاڻ لاء ڳالهائيندو آهي. منظور ٿيل مجموعن جي ذريعي ٻيهر ورجائي ٿو ۽ هر عنصر لاء لامبڊا اظهار تي عمل ڪري ٿو action.
List <Integer> numbers = new ArrayList<>(Arrays.asList(1,2,3,4,5,6,7));
numbers.forEach(s -> System.out.print(s + " "));
1 2 3 4 5 6 7

2. Collection.removeIf(Predicate<? super E> فلٽر)

ڪجھ به نه پيچيده. اهو طريقو گڏ ڪرڻ جي ذريعي ورجائي ٿو ۽ انهن عناصر کي هٽائي ٿو جيڪي ملن ٿا filter.
List <Integer> numbers = new ArrayList<>(Arrays.asList(1,2,3,4,5,6,7));
numbers.removeIf(s -> s > 5);
 numbers.forEach(s -> System.out.print(s + " "));
ھڪڙي لڪير ۾ اسان فهرست مان 5 کان وڌيڪ نمبرن کي ختم ڪريون ٿا.

3. Map.forEach(BiConsumer<? super K, ? super V> action)

اهو طريقو forEachنه صرف انهن طبقن لاءِ ڪم ڪري ٿو جيڪي انٽرفيس کي لاڳو ڪن ٿا Collectionپر انهن لاءِ پڻ Map.
Map <String, String> books = new HashMap<>();
books.put("Война и мир", "Лев Толстой");
books.put("Преступление и наказание", "Федор Достоевский");
books.put("Философия Java", "Брюс Эккель");
books.put("Братья Карамазовы", "Федор Достоевский");
books.put("Властелин Колец", "Джон Толкин");
books.forEach((a,b) -> System.out.println("Название книги: " + a + ". Author: " + b));
Название книги: Братья Карамазовы. Author: Федор Достоевский
Название книги: Философия Java. Author: Брюс Эккель
Название книги: Преступление и наказание. Author: Федор Достоевский
Название книги: Война и мир. Author: Лев Толстой
Название книги: Властелин Колец. Author: Джон Толкин

4. Map.compute(K key,BiFunction<? super K, ? super V, ? extensions V> remappingFunction)

اهو ٿورڙو وڌيڪ خوفناڪ ڏسڻ ۾ اچي ٿو، پر حقيقت ۾ اهو سادو آهي، سڀني پوئين وانگر. مخصوص ڪيل ڪي لاءِ key، هي طريقو قدر مقرر ڪري ٿو فعل جي نتيجي ۾ remappingFunction. مثال طور:
Map <String, String> books = new HashMap<>();
books.put("Война и мир", "Лев Толстой");
books.put("Преступление и наказание", "Федор Достоевский");
books.put("Философия Java", "Брюс Эккель");
books.put("Братья Карамазовы", "Федор Достоевский");
books.put("Властелин Колец", "Джон Толкин");
books.forEach((a,b) -> System.out.println("Название книги: " + a + ". Author: " + b));

books.compute("Философия Java", (a,b) -> b+", крутой чувак");
System.out.println("_______________________");
books.forEach((a,b) -> System.out.println("Название книги: " + a + ". Author: " + b));
Название книги: Братья Карамазовы. Author: Федор Достоевский
Название книги: Философия Java. Author: Брюс Эккель
Название книги: Преступление и наказание. Author: Федор Достоевский
Название книги: Война и мир. Author: Лев Толстой
Название книги: Властелин Колец. Author: Джон Толкин
_______________________
Название книги: Братья Карамазовы. Author: Федор Достоевский
Название книги: Философия Java. Author: Брюс Эккель, крутой чувак
Название книги: Преступление и наказание. Author: Федор Достоевский
Название книги: Война и мир. Author: Лев Толстой
Название книги: Властелин Колец. Author: Джон Толкин
” جاوا فلسفو “ جو ليکڪ يقيناً ٿڌو آهي! :)

5. Map.computeIfAbsent(K key، Function<? super K، ? extensions V> mappingFunction)

اهو طريقو نقشي ۾ هڪ نئون عنصر شامل ڪندو ، پر صرف ان صورت ۾ جڏهن عنصر ساڳي چاٻي سان نه هجي. فنڪشن جي عمل جو نتيجو valueان کي لڳايو ويندو mappingFunction. جيڪڏهن اهڙي چاٻي سان هڪ عنصر اڳ ۾ ئي موجود آهي، اهو ختم نه ڪيو ويندو، پر جڳهه تي رهندو. اچو ته اسان جي ڪتابن ڏانهن واپس وڃو ۽ هڪ نئين طريقي جي ڪوشش ڪريو:
Map <String, String> books = new HashMap<>();
books.put("Война и мир", "Лев Толстой");
books.put("Преступление и наказание", "Федор Достоевский");
books.put("Философия Java", "Брюс Эккель");
books.put("Братья Карамазовы", "Федор Достоевский");
books.put("Властелин Колец", "Джон Толкин");

books.computeIfAbsent("Гарри Поттер и узник Азкабана", b -> getHarryPotterAuthor());
books.forEach((a,b) -> System.out.println("Название книги: " + a + ". Author: " + b));
اسان جو ڪم mappingFunction:
public static String getHarryPotterAuthor() {
        return "Джоан Роулинг";
    }
۽ هتي نئون ڪتاب آهي:
Название книги: Братья Карамазовы. Author: Федор Достоевский
Название книги: Философия Java. Author: Брюс Эккель
Название книги: Преступление и наказание. Author: Федор Достоевский
Название книги: Война и мир. Author: Лев Толстой
Название книги: Гарри Поттер и узник Азкабана. Author: Джоан Роулинг
Название книги: Властелин Колец. Author: Джон Толкин

6. Map.computeIfPresent(K key, BiFunction<? super K, ? super V, ? extensions V> remappingFunction)

ساڳيو اصول جيئن، Map.compute()پر سڀ ڳڻپيوڪر صرف ان صورت ۾ ڪيا ويندا جڏهن عنصر keyاڳ ۾ ئي موجود هجي.
Map <String, String> books = new HashMap<>();
books.put("Война и мир", "Лев Толстой");
books.put("Преступление и наказание", "Федор Достоевский");
books.put("Философия Java", "Брюс Эккель");
books.put("Братья Карамазовы", "Федор Достоевский");
books.put("Властелин Колец", "Джон Толкин");

books.computeIfPresent("Евгений Онегин", (a,b) -> b="Александр Пушкин");
System.out.println("_________________");
books.forEach((a,b) -> System.out.println("Название книги: " + a + ". Author: " + b));
books.computeIfPresent("Братья Карамазовы", (a,b) -> b="Александр Пушкин");
System.out.println("_________________");
books.forEach((a,b) -> System.out.println("Название книги: " + a + ". Author: " + b));
جڏهن پهريون ڀيرو فنڪشن کي سڏيو ويو، ڪابه تبديلي نه آئي، ڇاڪاڻ ته Mapاسان وٽ "يوجين ونگين" جي عنوان سان ڪو به ڪتاب موجود ناهي. پر ٻئي دفعي پروگرام ڪتاب جي ليکڪ کي تبديل ڪري ڇڏيو "دي برادرز ڪرامازوف" کي "اليگزينڊر پشڪن". نتيجو:
_________________
Название книги: Братья Карамазовы. Author: Федор Достоевский
Название книги: Философия Java. Author: Брюс Эккель
Название книги: Преступление и наказание. Author: Федор Достоевский
Название книги: Война и мир. Author: Лев Толстой
Название книги: Властелин Колец. Author: Джон Толкин
_________________
Название книги: Братья Карамазовы. Author: Александр Пушкин
Название книги: Философия Java. Author: Брюс Эккель
Название книги: Преступление и наказание. Author: Федор Достоевский
Название книги: Война и мир. Author: Лев Толстой
Название книги: Властелин Колец. Author: Джон Толкин

7. Map.getOrDefault(Object key، V defaultValue)

ڪنجي سان ملندڙ قدر واپس ڪري ٿو key. جيڪڏهن اهڙي ڪيچ موجود ناهي، ڊفالٽ قيمت واپسي.
Map <String, String> books = new HashMap<>();
books.put("Война и мир", "Лев Толстой");
books.put("Преступление и наказание", "Федор Достоевский");
books.put("Философия Java", "Брюс Эккель");
books.put("Братья Карамазовы", "Федор Достоевский");
books.put("Властелин Колец", "Джон Толкин");

String igor = books.getOrDefault("Слово о полку Игореве", "Неизвестный автор");
System.out.println(igor);
بلڪل آرام سان:
Неизвестный автор

8. Map.merge(K key, V value, BiFunction<? super V, ? super V, ? extensions V> remappingFunction)

مون ڳڻڻ جي ڪوشش به نه ڪئي ته ڪوڊ جون ڪيتريون لائينون هي طريقو توهان کي بچائيندو.
  • Mapجيڪڏهن ڪيڏي توهان ۾ keyموجود نه آهي ، يا valueهن ڪيئي لاءِ اها برابر آهي ، nullطريقو شامل ڪري ٿو .Mapkey-value
  • جيڪڏهن ڪيچ Keyموجود آهي ۽ اهو موجود آهي، value != nullطريقو ان کي تبديل ڪري ٿو ان کي valueانجام ڏيڻ جي نتيجي ۾ منظور ٿيل فنڪشن remappingFunction.
  • جيڪڏهن remappingFunctionاهو واپس اچي ٿو null، keyاهو مجموعو مان هٽايو ويو آهي.
Map <String, String> books = new HashMap<>();
books.put("Война и мир", "Лев Толстой");
books.put("Преступление и наказание", "Федор Достоевский");
books.put("Философия Java", "Брюс Эккель");
books.put("Братья Карамазовы", "Федор Достоевский");
books.put("Властелин Колец", "Джон Толкин");

books.merge("Философия Java", "Брюс Эккель", (a, b) -> b +  " и кто-то там еще");
books.forEach((a,b) -> System.out.println("Название:" + a + ". Author: " + b));
نتيجو:
Название:Братья Карамазовы. Author: Федор Достоевский
Название:Философия Java. Author: Брюс Эккель и кто-то там еще
Название:Преступление и наказание. Author: Федор Достоевский
Название:Война и мир. Author: Лев Толстой
Название:Властелин Колец. Author: Джон Толкин
*معاف ڪجو بروس*

9. Map.putIfAbsent(K key، V قدر)

اڳي، هڪ جوڙي کي شامل ڪرڻ لاء Mapجيڪڏهن اهو موجود نه هو، توهان کي هيٺيان ڪرڻو پوندو:
Map <String, String> map = new HashMap<>();
if (map.get("Властелин Колец") == null)
    map.put("Властелин Колец", "Джон Толкин");
هاڻي هر شيء بلڪل آسان ٿي چڪي آهي:
Map<String, String> map = new HashMap<>();
map.putIfAbsent("Властелин Колец", "Джон Толкин");

10. Map.replace ۽ Map.replaceAll()

لسٽ تي آخري، پر گهٽ ۾ گهٽ نه. Map.replace(K key, V newValue- ڪيئي قدر کي تبديل ڪري ٿو key، newValueجيڪڏهن اهڙي ڪيئي موجود آهي. جيڪڏهن نه، ڪجهه به نه ٿيندو. Map.replace(K key, V oldValue, V newValue)- ساڳيو ڪم ڪندو آهي، پر صرف جيڪڏهن موجوده قدر keyآهي oldValue. Map.replaceAll(BiFunction<? super K, ? super V, ? extends V> function)- سڀني قدرن کي تبديل ڪري ٿو valueفنڪشن جي عمل جي نتيجي سان function. مثال طور:
Map <String, String> books = new HashMap<>();
books.put("Война и мир", "Лев Толстой");
books.put("Преступление и наказание", "Федор Достоевский");
books.put("Философия Java", "Брюс Эккель");
books.put("Братья Карамазовы", "Федор Достоевский");
books.put("Властелин Колец", "Джон Толкин");

books.replace("Братья Карамазовы", "Брюс Эккель", "Джон Толкин");
books.forEach((a,b) -> System.out.println("Название:" + a + ". Author: " + b));
Название:Братья Карамазовы. Author: Федор Достоевский
Название:Философия Java. Author: Брюс Эккель
Название:Преступление и наказание. Author: Федор Достоевский
Название:Война и мир. Author: Лев Толстой
Название:Властелин Колец. Author: Джон Толкин
ڪم نه ڪيو! برادرز ڪرامازوف جي موجوده قيمت فيودور دوستوفسڪي آهي، بروس ايڪيل نه، تنهنڪري ڪجھ به تبديل نه ڪيو ويو آهي.
Map <String, String> books = new HashMap<>();
books.put("Война и мир", "Лев Толстой");
books.put("Преступление и наказание", "Федор Достоевский");
books.put("Философия Java", "Брюс Эккель");
books.put("Братья Карамазовы", "Федор Достоевский");
books.put("Властелин Колец", "Джон Толкин");

books.replaceAll((a,b) -> getCoolWriter());
books.forEach((a,b) -> System.out.println("Название:" + a + ". Author: " + b));
public static String getCoolWriter() {
        return "Крутой писатель";
    }
Название:Братья Карамазовы. Author: Крутой писатель
Название:Философия Java. Author: Крутой писатель
Название:Преступление и наказание. Author: Крутой писатель
Название:Война и мир. Author: Крутой писатель
Название:Властелин Колец. Author: Крутой писатель
ڪنهن به پيچيده تعميرات کان سواء سڄي نقشي جي قيمت کي آساني سان تبديل ڪيو! پي ايس نئين شيءِ جي عادت ٿيڻ هميشه مشڪل آهي، پر اهي تبديليون واقعي سٺيون آهن. ڪنهن به صورت ۾، منهنجي ڪوڊ جا ڪجهه حصا هاڻي يقيني طور تي اڳ جي ڀيٽ ۾ گهٽ اسپگيٽي وانگر آهن :) جيڪڏهن توهان مضمون پسند ڪيو آهي ۽ نوان ڏسڻ چاهيو ٿا، "پسند" تي ڪلڪ ڪندي مقابلي ۾ ليکڪ جي حمايت ڪرڻ نه وساريو، يا اڃا بهتر، "پسند" :) توهان جي پڙهائي ۾ سٺي قسمت!
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION