Kratki uvod u Java 8 Lambdas

  • Edmund Richardson
  • 0
  • 5171
  • 611
Oglas

Ako ste Java programer i zanima vas više o Java 8 lambdama, u ovom ćemo članku detaljnije pogledati lambda sintaksu i upotrebu.

lambda izraz u Javi je sažet način izražavanja metode klase u izrazu. Ima popis parametara i tijela. Tijelo može biti pojedinačni izraz ili blok 10 osnovnih Java koncepata koje biste trebali naučiti pri početku 10 jezgrenih Java koncepata koje biste trebali naučiti kada započeti Bilo da pišete GUI, razvijate softver na strani poslužitelja ili mobilnu aplikaciju pomoću Androida, učenje Java dobro će vam poslužiti. Evo nekih osnovnih Java koncepata koji će vam pomoći da započnete s radom. , Često se koristi tamo gdje je potrebna implementacija sučelja. Ova se potreba obično javlja kada je potrebno sučelje kao argument za pozivanje metode.

Neki jednostavni lambda izrazi

Pogledajmo nekoliko jednostavnih primjera lambda izraza.

Slijedi lambda izraz koji prihvaća dva broja x i y i izračunava zbroj.

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

Ispustite vrste parametara za sažetiji prikaz:

(x, y) -> x + y; 

Definirajte funkciju koja ne prihvaća nikakve parametre:

() -> 404; 

I ovo vrijedi, a ne prihvaća nikakve parametre i ne vraća ništa:

() ->  

Nema potrebe za paratezama koje uključuju parametre za jedan parametar:

x -> x + 1 

Mogući su i složeniji blokovi kodova. Sljedeća lambda prihvaća singl crta parametar i vrši li neku obradu na njemu. Imajte na umu da se vrsta parametra zaključuje iz okruženja:

redak -> String [] x = pattern.split (linija); vrati novi Player (Integer.parseInt (x [0]), x [1], x [2], x [3], Integer.parseInt (x [4]));  

Čist i koncizan kodiranje

Korištenje lambda izraza pomaže da vaš kôd bude čist i sažet. Da bi im pomogli u tome, klase Java 8 uvelike koriste lambdas.

Pregledavanje popisa ili skupa

Zbirke klase poput Popis, Set, Red, i na takav način implementirati Iterable sučelje koje olakšava petlje preko elemenata.

Proglasite popis imena.

Nazivi popisa = Arrays.asList ("Joe", "Jack", "James", "Albert"); 

Pređite petom preko liste bez lambda:

za (Naziv niza: imena) System.out.println (ime);  

Pomoću lambde, gornja petlja može se napisati kao:

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

S referencama Java 8 metode, gore navedeno se može još složenije napisati kao:

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

Pregledavanje karte

Karta je preslikavanje ključeva vrijednosti. Pregledavanje karte podrazumijeva petlje preko svakog (ključa, vrijednosti) mapiranja. Usporedite kako možete koristiti lambdas za ovu situciju.

Prvo definirajte kartu:

Map map = novi HashMap (); map.put ("Atlanta, Georgia", 110); map.put ("Austin, Texas", 115); map.put ("Baltimore, Maryland", 105); map.put ("Birmingham, Alabama", 99); map.put ("Boston, Massachusetts", 98); 

Možete preskočiti kartu na tradicionalni način:

za (Map.Entry e: map.entrySet ()) System.out.println (e.getKey () + "=>" + e.getValue ());  

Evo kako istu stvar možete učiniti na brzi i koncizan način pomoću lambda:

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

Funkcionalna sučelja

Koji je povratni tip lambda izraza? Drugim riječima, što je vrsta x u sljedećoj izjavi?

X x = a -> a + 1; 

Povratna vrsta lambda izraza je a funkcionalno sučelje - sučelje s jednom apstraktnom metodom. Lambda izrazu možete dodijeliti sučelje kompatibilnom apstraktnom metodom. Neki primjeri u nastavku.

Izrada zadatka s više navoja

Razmislite o stvaranju zadatka za izvršenje u zasebnom nizu 4 Metode za pisanje višerezanog koda na Javi 4 Metode za pisanje višerezanog koda u Javi U ovom članku uspoređujemo nekoliko opcija za pisanje višedijelnog koda u Javu, tako da možete bolje prosuditi koju opciju koristiti za svoj sljedeći Java projekt. - morate zadaću definirati kao Runnable sučelje i implementirati trčanje() metoda. Ovdje Runnable je funkcionalno sučelje.

klasa MyTask implementira Runnable ... public void run () // implementirajte svoj zadatak ovdje System.out.println ("Pokretanje u zasebnom nizu sada."); … 

Tada možete stvoriti instancu MyTask klase i pomoću njega pokrenuti novu nit izvršenja.

MyTask zadatak = novi MyTask (); Navoj niti = novi Konac (zadatak); thread.start (); 

Korištenje lambde, postupak stvaranja a Runnable postaje mnogo lakše. Gornja definicija zadatka može se prepisati kao:

Runnable task = () -> System.out.println ("Sada se izvodi u zasebnom nizu."); 

Ili čak:

Konac niti = novi Thread (() -> System.out.println ("Sada se pokreće u zasebnom nizu."); thread.start (); 

Usporedba pomoću komparatora

komparator je funkcionalno sučelje za usporedbu objekata određenog tipa. Ona definira jednu apstraktnu metodu koja se naziva usporediti () što se može definirati pomoću lambda izraza.

Evo lambda izraza koji stvara a komparator koristi se za usporedbu žica bez ikakve osjetljivosti.

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

Jednom instanca komparator funkcionalno sučelje je stvoreno i može se koristiti po potrebi.

Ovdje sortiramo popis niza uzlaznim redoslijedom.

Nazivi popisa = Arrays.asList ("Joe", "Jack", "James", "Albert"); Zbirke.sort (imena, cmp); names.forEach (System.out :: println); // tiska Albert Jack James Joe 

Gornji je popis sortiran na mjestu. Sada ga možemo pretraživati ​​pomoću binarySearch () metoda kako slijedi:

System.out.println ("traži (Joe):" + Collections.binarySearch (imena, "Joe", cmp)); Pretraživanje # ispisa (Joe): 3 

Izračunavanje maksimuma i minimuma s popisa također je jednostavno uz korištenje lambdasa.

Definirajte neke podatke:

List temps = Arrays.asList (110, 115, 105, 99, 98, 54, 109, 84, 81, 66, 72, 135, 115, 75, 82, 90, 88); 

Upotrijebite lambda izraz da biste definirali usporednik:

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

I ispisati maksimum i minimum:

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

Upotreba u GUI programiranju

Lambda izrazi su također izuzetno korisni u GUI programiranju za implementaciju alata za obradu događaja. Evo primjera upotrebe alata za obradu klikova s ​​gumbom.

JButton gumb = novi JButton ("klikni me"); button.addActionListener (e -> System.out.println ("gumb pritisnut!")); 

A to je bio brzi pogled na korištenje lambda u Javi 8.

Jesu li vam lambde olakšale život od Java 8? Objasnite u komentarima u nastavku.




Još ne komentari

O modernoj tehnologiji, jednostavnoj i pristupačnoj.
Vaš vodič u svijetu moderne tehnologije. Naučite kako koristiti tehnologije i uređaje koji nas okružuju svaki dan i naučite kako otkriti zanimljivosti na Internetu.