Mainos

Jos olet Java-ohjelmoija ja olet kiinnostunut oppimaan lisää Java 8 -lambdaista, tässä artikkelissa tarkastellaan lähemmin lambda-syntaksia ja käyttöä.

lambda-ilmaisu Java on tiivis tapa ilmaista luokan menetelmä lausekkeessa. Siinä on luettelo parametreista ja runko. Keho voi olla yksi lauseke tai lohko 10 ydin Java-konseptia, jotka sinun tulisi oppia aloittaessasiKirjoitatko graafista käyttöliittymää, kehität palvelinpuolen ohjelmistoa tai mobiilisovellusta Androidin avulla, Java-oppiminen palvelee sinua hyvin. Tässä on joitain Java-käsitteitä, jotka auttavat sinua pääsemään alkuun. Lue lisää . Sitä käytetään yleisesti, kun tarvitaan rajapinnan toteutus. Tämä tarve syntyy yleensä silloin, kun menetelmän käynnistämiseksi vaaditaan käyttöliittymä.

Joitakin yksinkertaisia ​​lambda-lausekkeita

Katsotaanpa joitain yksinkertaisia ​​esimerkkejä lambda-lausekkeista.

Seuraava on lambda-lauseke, joka hyväksyy kaksi numeroa x ja y ja laskee summan.

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

Pudota parametrityypit saadaksesi tiiviimmän esityksen:

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

Määritä toiminto, joka ei hyväksy parametreja:

() -> 404; 

Myös seuraava on pätevä, joka ei hyväksy parametreja eikä anna mitään:

() -> {}

Yksittäisen parametrin parametreja sulkevia parantheesteja ei tarvita:

x -> x + 1. 

Monimutkaisempia koodilohkoja ovat myös mahdollisia. Seuraava lambda hyväksyy yhden linja parametrilla ja käsittelee sitä jonkin verran. Huomaa, että parametrin tyyppi johdetaan ympäröivästä tilanteesta:

rivi -> { Merkkijono [] x = kuvio.jako (viiva); palauta uusi pelaaja (Integer.parseInt (x [0]), x [1], x [2], x [3], Integer.parseInt (x [4])); }

Puhdas ja tiivis koodaus

Lambda-lausekkeiden käyttö auttaa tekemään koodistasi puhtaan ja tiiviin. Tämän avuksi Java 8 -luokat hyödyntävät laajasti lambdaa.

Silmukointi luettelon tai joukon yli

Kokoelmakurssit, kuten Lista, Aseta, Jonottaa, ja tällainen toteuttaa Iterable käyttöliittymä, joka tekee elementtien kiertämisestä paljon helpompaa.

Ilmoita luettelo nimistä.

Lista nimet = Arrays.asList ("Joe", "Jack", "James", "Albert"); 

Siirrä luettelo ilman lambda:

varten (merkkijono: nimet) {System.out.println (nimi); }

Yllä oleva silmukka voidaan kirjoittaa lambdan avulla seuraavasti:

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

Java 8 -menetelmäviitteillä yllä olevat voidaan kirjoittaa vielä tiiviimmin seuraavasti:

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

Silmukka kartan yli

Kartta on arvojen avainten kartoitus. Kartan kiertäminen tarkoittaa, että silmukoidaan jokainen (avain, arvo) -kartta. Vertaa, kuinka voit käyttää lambdaa tässä istunnossa.

Määritä ensin kartta:

Kartta kartta = uusi 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); 

Voit kiertää tämän kartan perinteisellä tavalla:

(Kartta. merkintä e: map.entrySet ()) {System.out.println (e.getKey () + "=>" + e.getValue ()); }

Näin voit tehdä saman asian nopeasti ja tiiviisti käyttämällä lambdaa:

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

Toiminnalliset rajapinnat

Mikä on lambda-lausekkeen paluu tyyppi? Toisin sanoen, mikä on X seuraavassa lausunnossa?

X x = a -> a + 1; 

Lambda-lausekkeen paluutyyppi on toiminnallinen käyttöliittymä - rajapinta yhdellä abstraktilla menetelmällä. Voit määrittää lambda-lausekkeen käyttöliittymälle yhteensopivalla abstraktilla menetelmällä. Joitakin esimerkkejä alla.

Monisäikeisen tehtävän luominen

Harkitse tehtävän luomista suorittaminen erillisessä säikeessä 4 Menetelmät monisäikeisen koodin kirjoittamiseen Java-sovellukseenTässä artikkelissa vertaamme muutamia vaihtoehtoja monisäikeisen koodin kirjoittamiseen Java-sovellukseen, jotta voit paremmin arvioida, mitä vaihtoehtoa käytetään seuraavaan Java-projektiisi. Lue lisää - Sinun on määritettävä tehtävä a runnable käyttöliittymä ja toteuttaa juosta() menetelmä. Tässä runnable on toimiva käyttöliittymä.

luokan MyTask toteuttaa Runnable {... public void run () {// toteuta tehtävä täällä System.out.println ("Suoritetaan erillisessä säikeessä nyt."); }... }

Voit sitten luoda ilmentymän Minun tehtäväni luokan ja käyttää sitä uuden suorittamisketjun aloittamiseen.

MyTask-tehtävä = uusi MyTask (); Ketjulanka = uusi säie (tehtävä); thread.start (); 

Lambdan avulla luodaan prosessi runnable tulee paljon helpommaksi. Yllä oleva tehtävämäärittely voidaan kirjoittaa uudelleen seuraavasti:

Suoritettava tehtävä = () -> System.out.println ("Suoritetaan erillisessä säikeessä nyt."); 

Tai jopa:

Ketjulanka = uusi säie (() -> System.out.println ("Käynnissä erillisessä säikeessä.")); thread.start (); 

Vertailu vertailun avulla

vertailuryhmässä on toiminnallinen käyttöliittymä tietyn tyyppisten esineiden vertaamiseksi. Se määrittelee yhden abstraktin menetelmän nimeltä vertailla() joka voidaan määritellä käyttämällä lambda-lauseketta.

Tässä on lambda-lauseke, joka luo vertailuryhmässä käytetään vertaamaan merkkijonoja tapauskohtaisesti.

vertailuryhmässä cmp = (x, y) -> x.compareToIgnoreCase (y); 

Kerran esimerkki vertailuryhmässä toiminnallinen käyttöliittymä on luotu, sitä voidaan käyttää uudelleen tarpeen mukaan.

Täällä lajittelemme luettelon merkkijonoista nousevassa järjestyksessä.

Lista nimet = Arrays.asList ("Joe", "Jack", "James", "Albert"); Collections.sort (nimet, cmp); names.forEach (System.out:: println); // tulostaa. Albert. Jack. James. Joe. 

Yllä oleva luettelo on lajiteltu paikoilleen. Voimme nyt etsiä sitä käyttämällä binarySearch () seuraava menetelmä:

System.out.println ("haku (Joe):" + kokoelmat.binarySearch (nimet, "Joe", cmp)); # tulostaa. haku (Joe): 3. 

Maksimi- ja minimilaskenta luettelosta on myös helppoa lambdan avulla.

Määritä tiedot:

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

Määritä vertailija lambda-lausekkeella:

vertailuryhmässä cmpTemp = (x, y) -> Integer.compare (x, y); 

Ja tulosta suurin ja vähimmäisarvo:

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

Käyttö GUI-ohjelmoinnissa

Lambda-lausekkeet ovat myös erittäin hyödyllisiä GUI-ohjelmoinnissa tapahtumakäsittelijöiden toteuttamiseksi. Tässä on esimerkki painikkeen napsautuskäsittelijän käytöstä.

JButton-painike = uusi JButton ("napsauta minua"); button.addActionListener (e -> System.out.println ("Nappia napsautettu!")); 

Ja se oli nopea katsaus lambdan käyttämiseen Java 8: ssa.

Ovatko lambdat helpottaneet elämääsi Java 8: n jälkeen? Selitä alla olevissa kommenteissa.