Skelbimas

Jei esate „Java“ programuotojas ir norite sužinoti daugiau apie „Java 8“ lambdas, šiame straipsnyje apžvelgsime lambda sintaksę ir naudojimą.

A lambda išraiška „Java“ yra glaustas būdas išreikšti klasės metodą saviraiškai. Jame yra parametrų sąrašas ir tekstas. Kūnas gali būti vienas išraiška ar blokas 10 pagrindinių „Java“ sąvokų, kurių turėtumėte išmokti pradėjęNesvarbu, ar rašote GUI, kuriate serverio programinę įrangą, ar mobiliąją programą naudodami „Android“, „Java“ mokymasis jums bus naudingas. Čia yra keletas pagrindinių „Java“ sąvokų, kurios padės jums pradėti. Skaityti daugiau . Paprastai jis naudojamas ten, kur reikalinga sąsaja. Šis poreikis paprastai iškyla, kai reikia sąsajos kaip argumento metodui panaudoti.

Keletas paprastų „Lambda“ išraiškų

Pažvelkime į keletą paprastų lambda išraiškos pavyzdžių.

Toliau pateikiama lambda išraiška, kuri priima du skaičius x ir y ir apskaičiuoja sumą.

(int x, int y) -> x + y; 

Atmeskite parametrų tipus, kad pateiktumėte glaudesnį vaizdą:

instagram viewer
(x, y) -> x + y; 

Apibrėžkite funkciją, kuri nepriima jokių parametrų:

() -> 404; 

Galioja ir šie dalykai, kurie nepriima jokių parametrų ir nieko negrąžina:

() -> {}

Nereikia paranthesų, apimančių vieno parametro parametrus:

x -> x + 1. 

Taip pat galimi sudėtingesni kodų blokai. Sekanti lambda priima singlą linija parametrą ir šiek tiek jį apdoroja. Atminkite, kad parametro tipas nustatomas atsižvelgiant į aplinkybes:

eilutė -> { Styga [] x = schema.skaidyti (linija); grąžinti naują grotuvą („Integer.parseInt“ (x [0]), x [1], x [2], x [3], „Integer.parseInt“ (x [4])); }

Švarus ir glaustas kodavimas

Naudojant lambda išraiškas, jūsų kodas tampa švarus ir glaustas. Norėdami tai padėti, „Java 8“ klasės plačiai naudoja lambdas.

Sąrašo ar sąrašo peržiūra

Tokios kolekcijos klasės kaip Sąrašas, Rinkinys, Eilė, ir toks įgyvendina Nepamirštama sąsaja, kuri žymiai palengvina elementų perjungimą.

Paskelbkite vardų sąrašą.

Sąrašas vardai = Arrays.asList („Joe“, „Jack“, „James“, „Albert“); 

Pereikite prie sąrašo be lambda:

for (eilutės pavadinimas: vardai) {System.out.println (vardas); }

Naudojant lambda, aukščiau pateiktą kilpą galima parašyti taip:

names.forEach (vardas -> System.out.println (vardas)); 

Naudojant „Java 8“ metodo nuorodas, aukščiau pateiktą informaciją galima parašyti dar glaustai:

names.forEach (System.out:: println); 

Žemėlapio kilpa

A Žemėlapis yra reikšmių atvaizdavimas. Žemėlapio nustatymas apima kiekvieno (rakto, vertės) žemėlapio sudarymą. Palyginkite, kaip jūs galite naudoti lambdas šiai miegojimui.

Pirmiausia apibrėžkite žemėlapį:

Žemėlapis žemėlapis = naujas „HashMap 

Galite perbraukti šį žemėlapį tradiciniu būdu:

(žemėlapis. Įėjimas e: map.entrySet ()) {System.out.println (e.getKey () + "=>" + e.getValue ()); }

Štai kaip jūs galite greitai ir glaustai tą patį padaryti naudodami lambdas:

map.forEach ((k, v) -> System.out.println (k + "=>" + v)); 

Funkcinės sąsajos

Koks yra lambda išraiškos grįžtamasis tipas? Kitaip tariant, kas yra X kitame teiginyje?

X x = a -> a + 1; 

Grįžtamasis lambda išraiškos tipas yra a funkcinė sąsaja - sąsaja su vienu abstrakčiu metodu. Galite priskirti lambda išraišką sąsajai suderinamu abstrakčiu metodu. Keletas pavyzdžių žemiau.

Kelių gijų užduoties sukūrimas

Apsvarstykite galimybę sukurti užduotį vykdymas atskirame gijoje 4 „Java“ kalbų kelių sriegių kodo rašymo metodaiŠiame straipsnyje mes palyginkime keletą variantų, kaip „Java“ rašyti kelių sriegių kodą, kad galėtumėte geriau įvertinti, kurią parinktį naudoti kitame „Java“ projekte. Skaityti daugiau - jūs turite apibrėžti užduotį kaip a Paleidžiama sąsaja ir įgyvendinti bėgti () metodas. Čia Paleidžiama yra funkcinė sąsaja.

klasės „MyTask“ įgyvendina „Runnable“ {... public void run () {// įgyvendinkite savo užduotį čia System.out.println ("Dabar vykdoma atskira gija."); }... }

Tada galite sukurti „MyTask“ klasę ir naudokite ją norėdami pradėti naują vykdymo giją.

„MyTask“ užduotis = naujas „MyTask“ (); Sriegio gija = nauja gija (užduotis); siūlas.start (); 

Naudojant lambda, sukuriamas procesas Paleidžiama tampa daug lengviau. Aukščiau pateiktą užduoties apibrėžimą galima perrašyti taip:

Vykdoma užduotis = () -> System.out.println („Dabar vykdoma atskira gija.“); 

Ar net:

Gijos sriegis = nauja gija (() -> System.out.println („Dabar vykdoma atskira gija.“)); siūlas.start (); 

Palyginimas naudojant komparatorių

Komparatorius yra funkcinė sąsaja tam tikro tipo objektams palyginti. Tai apibūdina vieną abstrakčią metodą, vadinamą palyginti () kuriuos galima apibrėžti naudojant lambda išraišką.

Čia yra lambda išraiška, sukurianti Komparatorius naudojamas lyginti stygas, kurios nėra jautrios.

Komparatorius cmp = (x, y) -> x.compareToIgnoreCase (y); 

Kartą Komparatorius sukurta funkcinė sąsaja, ją galima prireikus pakartotinai naudoti.

Čia mes surikiuosime stygų sąrašą didėjančia tvarka.

Sąrašas vardai = Arrays.asList („Joe“, „Jack“, „James“, „Albert“); Kolekcijos.sortas (vardai, pavardės); names.forEach (System.out:: println); // spausdina. Albertas. Domkratas. Džeimsas. Džo. 

Aukščiau pateiktas sąrašas yra surūšiuotas vietoje. Dabar galime jo ieškoti naudodami dvejetainė paieška () metodas toks:

System.out.println („ieškoti (Joe):“ + Kolekcijos.binarySearch (vardai, „Joe“, cmp)); # atspausdina. paieška (Džo): 3. 

Taip pat nesunku apskaičiuoti maksimalų ir minimalų iš sąrašo, naudojant lambdas.

Apibrėžkite kai kuriuos duomenis:

Sąrašas temp = Arrays.asList (110, 115, 105, 99, 98, 54, 109, 84, 81, 66, 72, 135, 115, 75, 82, 90, 88); 

Norėdami apibrėžti palyginėją, naudokite „lambda“ išraišką:

Komparatorius cmpTemp = (x, y) -> Integer.compare (x, y); 

Ir atsispausdinkite maksimalų ir minimalų:

„System.out.println“ („Max / Min“); System.out.println (Collections.max (temps, cmpTemp) + "/" + Collections.min (temps, cmpTemp)); 

Naudojimas GUI programavime

Lambda išraiškos taip pat yra labai naudingos programuojant GUI, siekiant įgyvendinti įvykių tvarkytojus. Čia yra mygtukų paspaudimų tvarkyklės naudojimo pavyzdys.

JButton mygtukas = naujas JButton („Spustelėk mane“); button.addActionListener (e -> System.out.println („Mygtukas spustelėtas!“)); 

Tai buvo greitas žvilgsnis į „lambdas“ naudojimą „Java 8“.

Ar ėriukai palengvino jūsų gyvenimą nuo „Java 8“? Prašau paaiškinti žemiau pateiktuose komentaruose.