منهنجو خيال آهي ته JavaRush شاگردن کي وضاحت ڪرڻ جي ڪا ضرورت ناهي ته مجموعا ڇا آهن ۽ اهي ڇا لاءِ آهن. بهرحال، 8 هين ورزن جي ڇڏڻ کان پوء، ڪيترائي ابتدائي عمل، جيڪي اڳ ۾ ڪوڊ جون 6-7 لائينون وٺي رهيا هئا، گهٽ ۾ گهٽ آسان ٿي ويا. بغير ڪنهن اشتهار جي، هتي آهن مٿيان 10 بهترين Java8 ڪليڪشن فريم ورڪ ٽيڪنڪ جيڪي توهان جي وقت ۽ جاءِ کي بچائينديون! سڀني کي سلام، دوستو! عادت، جيئن توهان کي خبر آهي، ٻي فطرت آهي. ۽ لکڻ جي عادت پئجي وئي،
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
طريقو شامل ڪري ٿو .Map
key-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: Крутой писатель
ڪنهن به پيچيده تعميرات کان سواء سڄي نقشي جي قيمت کي آساني سان تبديل ڪيو! پي ايس نئين شيءِ جي عادت ٿيڻ هميشه مشڪل آهي، پر اهي تبديليون واقعي سٺيون آهن. ڪنهن به صورت ۾، منهنجي ڪوڊ جا ڪجهه حصا هاڻي يقيني طور تي اڳ جي ڀيٽ ۾ گهٽ اسپگيٽي وانگر آهن :) جيڪڏهن توهان مضمون پسند ڪيو آهي ۽ نوان ڏسڻ چاهيو ٿا، "پسند" تي ڪلڪ ڪندي مقابلي ۾ ليکڪ جي حمايت ڪرڻ نه وساريو، يا اڃا بهتر، "پسند" :) توهان جي پڙهائي ۾ سٺي قسمت!
GO TO FULL VERSION