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! Hello 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 lambdaaction
kanggo 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 cocogfilter
.
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 kasebutforEach
ora 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 ditemtokakekey
, 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. Asilvalue
saka 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 key
wis 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 Map
ora 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 kuncikey
. 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.Map
Yen tombolkey
ora ana ing sampeyan , utawavalue
kanggo kunci iki padha ,null
cara nambah .Map
key-value
- Yen tombol kasebut
Key
ana lan ana,value != null
cara kasebut nggantivalue
dadi asil saka eksekusi fungsi sing dilewatiremappingFunction
. - Yen
remappingFunction
balinull
,key
bakal 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 pasanganMap
yen 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 key
karo 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 key
saiki oldValue
. Map.replaceAll(BiFunction<? super K, ? super V, ? extends V> function)
- ngganti kabeh nilai value
kanthi 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!
GO TO FULL VERSION