JavaRush /Blog Jawa /Random-JV /Mungkasi siklus nulis! 10 cara paling apik kanggo nggarap...

Mungkasi siklus nulis! 10 cara paling apik kanggo nggarap koleksi saka Jawa 8

Diterbitake ing grup
Aku ora perlu nerangake marang siswa JavaRush apa koleksi lan kanggo apa. Nanging, sawise release saka versi 8, akeh operasi dhasar, kang sadurunge njupuk 6-7 baris kode, wis simplified kanggo minimal. Tanpa basa-basi, iki 10 teknik Framework Koleksi Java8 paling apik sing bakal ngirit wektu lan papan! Mungkasi siklus nulis!  10 cara paling apik kanggo nggarap koleksi saka Jawa 8 - 1Hello everyone, kanca! Kebiasaan, kaya sing sampeyan ngerteni, minangka sifat sing kapindho. Lan wis biasa nulis, for (int i = 0; i <......)aku ora pengin sinau maneh (utamane amarga desain iki cukup prasaja lan bisa dingerteni). Nanging, ing puteran kita asring mbaleni operasi dhasar sing padha, pengulangan sing pancene pengin kita nyingkirake. Kanthi rilis Java8, Oracle mutusake kanggo nulungi kita babagan iki. Ing ngisor iki ana 10 cara koleksi paling apik sing bakal ngirit wektu lan kode.

1. Iterable.forEach(Consumer<? super T> action)

Jeneng ngandika kanggo dhewe. Nguripake koleksi liwat lan nglakokake ekspresi lambda actionkanggo saben unsur.
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)

Ora ana sing rumit. Cara kasebut ngliwati koleksi lan mbusak unsur sing cocog 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 + " "));
Ing siji baris kita mbusak saka dhaptar kabeh nomer luwih saka 5.

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

Cara kasebut forEachora mung dianggo kanggo kelas sing ngleksanakake antarmuka Collection, nanging uga kanggo 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, ? extends V> remappingFunction)

Iku katon sethitik liyane intimidating, nanging ing kasunyatan iku prasaja, kaya kabeh sadurunge. Kanggo tombol sing ditemtokake key, cara iki nyetel nilai kanggo asil fungsi kasebut remappingFunction. Tuladhane:
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: Джон Толкин
Pengarang " Filsafat Jawa " mesthi keren! :)

5. Map.computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction)

Cara kasebut bakal nambah unsur anyar menyang Peta , nanging mung yen unsur karo tombol padha ora ana. Asil valuesaka eksekusi fungsi bakal ditugasake mappingFunction. Yen unsur karo tombol kuwi wis ana, iku ora bakal ditindhes, nanging bakal tetep ing panggonan. Ayo bali menyang buku lan coba cara anyar:
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));
Fungsi kita mappingFunction:
public static String getHarryPotterAuthor() {
        return "Джоан Роулинг";
    }
Lan iki buku anyar:
Название книги: Братья Карамазовы. Author: Федор Достоевский
Название книги: Философия Java. Author: Брюс Эккель
Название книги: Преступление и наказание. Author: Федор Достоевский
Название книги: Война и мир. Author: Лев Толстой
Название книги: Гарри Поттер и узник Азкабана. Author: Джоан Роулинг
Название книги: Властелин Колец. Author: Джон Толкин

6. Map.computeIfPresent(tombol K, BiFunction<? super K, ? super V, ? extends V> remappingFunction)

Prinsip sing padha karo , Map.compute()nanging kabeh kalkulasi mung bakal ditindakake yen unsur karo tombol keywis ana.
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));
Nalika fungsi kasebut pisanan diarani, ora ana owah-owahan, amarga Mapora ana buku kanthi judhul "Eugene Onegin" ing kita. Nanging kanggo kaping pindho program diganti penulis kanggo buku "The Brothers Karamazov" kanggo "Alexander Pushkin". Kesimpulan:
_________________
Название книги: Братья Карамазовы. Author: Федор Достоевский
Название книги: Философия Java. Author: Брюс Эккель
Название книги: Преступление и наказание. Author: Федор Достоевский
Название книги: Война и мир. Author: Лев Толстой
Название книги: Властелин Колец. Author: Джон Толкин
_________________
Название книги: Братья Карамазовы. Author: Александр Пушкин
Название книги: Философия Java. Author: Брюс Эккель
Название книги: Преступление и наказание. Author: Федор Достоевский
Название книги: Война и мир. Author: Лев Толстой
Название книги: Властелин Колец. Author: Джон Толкин

7. Map.getOrDefault(tombol obyek, V defaultValue)

Ngasilake nilai sing cocog karo kunci key. Yen tombol kuwi ora ana, ngasilake nilai gawan.
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);
Nyaman banget:
Неизвестный автор

8. Map.merge(K kunci, nilai V, BiFunction<? super V, ? super V, ? ngluwihi V> remappingFunction)

Aku malah ora nyoba kanggo ngetung carane akeh baris kode cara iki bakal nyimpen sampeyan.
  • MapYen tombol keyora ana ing sampeyan , utawa valuekanggo kunci iki padha , nullcara nambah .Mapkey-value
  • Yen tombol kasebut Keyana lan ana, value != nullcara kasebut ngganti valuedadi asil saka eksekusi fungsi sing dilewati remappingFunction.
  • Yen remappingFunctionbali null, keybakal dibusak saka koleksi.
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));
Kesimpulan:
Название:Братья Карамазовы. Author: Федор Достоевский
Название:Философия Java. Author: Брюс Эккель и кто-то там еще
Название:Преступление и наказание. Author: Федор Достоевский
Название:Война и мир. Author: Лев Толстой
Название:Властелин Колец. Author: Джон Толкин
*ampun Bruce*

9. Map.putIfAbsent(K kunci, nilai V)

Sadurunge, kanggo nambah pasangan Mapyen ora ana, sampeyan kudu nindakake ing ngisor iki:
Map <String, String> map = new HashMap<>();
if (map.get("Властелин Колец") == null)
    map.put("Властелин Колец", "Джон Толкин");
Saiki kabeh wis dadi luwih gampang:
Map<String, String> map = new HashMap<>();
map.putIfAbsent("Властелин Колец", "Джон Толкин");

10. Map.replace lan Map.replaceAll()

Paling pungkasan ing dhaptar, nanging paling ora. Map.replace(K key, V newValue— ngganti nilai tombol keykaro newValue, yen tombol kuwi ana. Yen ora, ora ana sing kedadeyan. Map.replace(K key, V oldValue, V newValue)- nindakake perkara sing padha, nanging mung yen nilai keysaiki oldValue. Map.replaceAll(BiFunction<? super K, ? super V, ? extends V> function)- ngganti kabeh nilai valuekanthi asil eksekusi fungsi function. Tuladhane:
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: Джон Толкин
Ora bisa! Nilai saiki kunci Brothers Karamazov yaiku Fyodor Dostoevsky, dudu Bruce Eckel, mula ora ana owah-owahan.
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: Крутой писатель
Gampang ngganti nilai kanggo kabeh Peta tanpa konstruksi kompleks! PS Biasane sing anyar mesthi angel, nanging owah-owahan kasebut pancen apik. Ing kasus apa wae, sawetara bagean kodeku saiki ora kaya spageti tinimbang sadurunge :) Yen sampeyan seneng karo artikel kasebut lan pengin ndeleng sing anyar, aja lali ndhukung penulis ing kompetisi kanthi ngeklik "Seneng", utawa luwih apik, "Like" :) Good luck kanggo sinau!
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION