Reklāma
Ja esat Java programmētājs un vēlaties uzzināt vairāk par Java 8 lambdas, šajā rakstā mēs sīkāk aplūkosim lambda sintakse un lietojumu.
A lambda izteiksme Java valodā ir īss veids, kā izteikt klases metodi izteiksmē. Tam ir parametru saraksts un pamatteksts. Ķermenis var būt vienots izteiksme vai bloks 10 galvenie Java jēdzieni, kas jums jāapgūst, sākot darbuNeatkarīgi no tā, vai rakstāt GUI, izstrādājat servera puses programmatūru vai mobilo lietojumprogrammu, izmantojot Android, Java mācīšanās jums noderēs. Šeit ir daži Java pamatjēdzieni, kas palīdzēs jums sākt. Lasīt vairāk . To parasti izmanto, ja ir nepieciešama interfeisa ieviešana. Šī vajadzība parasti rodas, ja ir nepieciešams interfeiss kā arguments, lai izsauktu metodi.
Daži vienkārši lambda izteicieni
Apskatīsim dažus vienkāršus lambda izteicienu piemērus.
Šis ir lambda izteiksme, kurai ir divi skaitļi x un y un aprēķina summu.
(int x, int y) -> x + y;
Lai iegūtu precīzāku attēlojumu, nometiet parametru veidus:
(x, y) -> x + y;
Definējiet funkciju, kas nepieņem parametrus:
() -> 404;
Derīgs ir arī šis, kas nepieņem parametrus un neko neatdod:
() -> {}
Nav nepieciešams parantēzes, kas pievieno parametrus vienam parametram:
x -> x + 1.
Iespējami arī sarežģītāki kodu bloki. Sekojošā lambda pieņem singlu līnija parametru un veic kādu tā apstrādi. Ņemiet vērā, ka parametra tips tiek izsecināts no apkārtējā konteksta:
līnija -> { Stīga [] x = pattern.split (līnija); atgriezt jauno atskaņotāju (Integer.parseInt (x [0]), x [1], x [2], x [3], Integer.parseInt (x [4])); }
Tīra un kodīga kodēšana
Lambda izteiksmju izmantošana palīdz padarīt jūsu kodu tīru un kodolīgu. Lai to palīdzētu, Java 8 klases plaši izmanto lambdas.
Looping pār sarakstu vai kopu
Kolekcijas klases, piemēram, Saraksts, Komplekts, Rinda, un tas ievieš Iteratīvs saskarne, kas ievērojami atvieglo elementu atrašanu.
Deklarējiet vārdu sarakstu.
Saraksts nosaukumi = Arrays.asList ("Joe", "Jack", "James", "Albert");
Pārvietojieties pāri sarakstam bez lambdas:
for (virknes nosaukums: nosaukumi) {System.out.println (nosaukums); }
Izmantojot lambda, iepriekš norādīto cilpu var uzrakstīt šādi:
names.forEach (nosaukums -> System.out.println (nosaukums));
Izmantojot Java 8 metodes atsauces, iepriekšminēto var uzrakstīt vēl kodolīgāk šādi:
names.forEach (System.out:: println);
Pārvietošanās pa karti
A Karte ir vērtību atslēgu kartēšana. Pārvietošanās pa karti ietver pārlieku katras (atslēgas, vērtības) kartēšanu. Salīdziniet, kā jūs varat izmantot lambdas šajā sēdē.
Vispirms definējiet karti:
Karte karte = jauns HashMap <> (); map.put ("Atlanta, Džordžija", 110); map.put ("Austin, Texas", 115); map.put ("Baltimore, Maryland", 105); map.put ("Birmingema, Alabamas štats", 99); map.put ("Boston, Massachusetts", 98);
Jūs varat pārvietoties pa šo karti tradicionālā veidā:
par (karte. Iebraukšana e: map.entrySet ()) {System.out.println (e.getKey () + "=>" + e.getValue ()); }
Lūk, kā jūs varat ātri un kodolīgi paveikt to pašu, izmantojot lambdas:
map.forEach ((k, v) -> System.out.println (k + "=>" + v));
Funkcionālās saskarnes
Kāds ir lambda izteiksmes atgriešanās tips? Citiem vārdiem sakot, kāda veida ir X nākamajā paziņojumā?
X x = a -> a + 1;
Lambda izteiksmes atgriešanās tips ir a funkcionāls interfeiss - saskarne ar vienu abstraktu metodi. Ar interfeisu ar saderīgu abstraktu metodi var piešķirt lambda izteiksmi. Daži piemēri zemāk.
Daudzpavedienu uzdevuma izveidošana
Apsveriet uzdevuma izveidi izpilde atsevišķā pavedienā 4 Pavedienu koda rakstīšanas metodes JavaŠajā rakstā mēs salīdzinām dažas iespējas vairāku vītņu koda rakstīšanai Java, lai jūs varētu labāk spriest, kuru iespēju izmantot nākamajam Java projektam. Lasīt vairāk - jums jādefinē uzdevums kā a Palaižams saskarni un ieviest palaist () metode. Šeit Palaižams ir funkcionāls interfeiss.
klases MyTask īsteno Runnable {... public void run () {// šeit izpildiet savu uzdevumu System.out.println ("Pašlaik darbojas atsevišķā pavedienā."); }... }
Pēc tam jūs varat izveidot MyTask klase un izmantojiet to, lai sāktu jaunu izpildes pavedienu.
MyTask uzdevums = jauns MyTask (); Vītnes pavediens = jauns pavediens (uzdevums); pavediens.starts ();
Izmantojot lambdu, tiek izveidots process Palaižams kļūst daudz vieglāk. Iepriekš minēto uzdevuma definīciju var pārrakstīt šādi:
Runnable task = () -> System.out.println ("Pašlaik darbojas atsevišķā pavedienā.");
Vai pat:
Vītnes pavediens = jauns pavediens (() -> System.out.println ("Pašlaik darbojas atsevišķā pavedienā.")); pavediens.starts ();
Salīdzinājums, izmantojot salīdzinājumu
Salīdzinātājs ir funkcionāls interfeiss noteikta veida objektu salīdzināšanai. Tas definē vienotu abstraktu metodi, ko sauc par salīdzināt() ko var definēt, izmantojot lambda izteiksmi.
Šeit ir lambda izteiksme, kas rada Salīdzinātājs izmanto, lai salīdzinātu virknes bezjūtīgi.
Salīdzinātājs cmp = (x, y) -> x.compareToIgnoreCase (y);
Reiz Salīdzinātājs funkcionāls interfeiss ir izveidots, to var atkārtoti izmantot pēc nepieciešamības.
Šeit mēs sakārtojam virkņu sarakstu augošā secībā.
Saraksts nosaukumi = Arrays.asList ("Joe", "Jack", "James", "Albert"); Kolekcijas.sorts (vārdi, cmp); names.forEach (System.out:: println); // izdrukas. Alberts. Džeks. Džeimss. Džo.
Iepriekš minētais saraksts ir sakārtots vietā. Tagad to varam meklēt, izmantojot binārā meklēšana () šāda metode:
System.out.println ("meklēšana (Džo):" + kolekcijas.binarySearch (vārdi, "Džo", cmp)); # izdrukas. meklēšana (Džo): 3.
Izmantojot lambdas, ir viegli arī aprēķināt maksimālo un minimālo no saraksta.
Definējiet dažus datus:
Saraksts temps = Arrays.asList (110, 115, 105, 99, 98, 54, 109, 84, 81, 66, 72, 135, 115, 75, 82, 90, 88);
Izmantojiet lambda izteiksmi, lai definētu salīdzinātāju:
Salīdzinātājs cmpTemp = (x, y) -> Integer.compare (x, y);
Un izdrukājiet maksimālo un minimālo:
System.out.println ("Max / Min"); System.out.println (Collections.max (temps, cmpTemp) + "/" + Collections.min (temps, cmpTemp));
Izmantošana GUI programmēšanā
Lambda izteiksmes ir ārkārtīgi noderīgas arī GUI programmēšanā, lai ieviestu notikumu apstrādātājus. Šeit ir piemērs pogas noklikšķināšanas apdarinātāja izmantošanai.
JButton poga = jauna JButton ("Click Me"); button.addActionListener (e -> System.out.println ("Poga noklikšķinājusi!"));
Un tas bija īss ieskats lambdas lietošanā Java 8.
Vai lambdas ir atvieglojušas jūsu dzīvi kopš Java 8? Lūdzu, paskaidrojiet zemāk esošajos komentāros.