Javan nuolioperaattori (->) selitetään tässä artikkelissa sekä esimerkkikoodi, joka auttaa sinua ymmärtämään käsitteen.
Nuolioperaattori, jota käytetään luomaan lambda-lausekkeita, otettiin käyttöön yhdessä lambda-lauseketoiminnon lisäämisen kanssa Java 8:ssa. Se erottaa lausekkeen rungon argumenteista.
(parameters) -> { statements; } // Lambda expression having arrow
Java-koodin ymmärtämiseksi ja ytimekkäämiseksi Java 8:n käyttöön ottama lambda-lauseke voidaan käyttää anonyymien luokkien paikallaan.
Alla on esimerkki nimettömän luokan rakentamisesta Javalla ennen Java 8:aa.
python-ohjelmat
Runnable r1 = new Runnable() { @Override public void run() { System.out.print(' method Run '); } };
Ja näin voimme suorittaa edellä mainitun tehtävän Java 8:ssa käyttämällä lambda-lauseketta.
Runnable r1 = ()-> System.out.print(' method Run ');
Ymmärtääksemme paremmin, kuinka lambda- ja nuolioperaattoreita käytetään, aloitetaan muutamalla esimerkillä.
Kuinka käyttää Arrow Operatoria Javassa?
Tässä kuvassa sekä Drawable-rajapinnan draw()-menetelmä toteutettiin lambda-lausekkeen ja nuolioperaattorin avulla. Katso alla olevaa kuvaa.
java kytkin int
M.java
interface Drawable{ public void draw(); } public class M { public static void main(String[] args) { int w = 20; // arrow operator Drawable d=()->{ System.out.println(' Drawing width is '+w); }; d.draw(); } }
Lähtö:
1-100 roomalainen nro
Voimme hyödyntää lambda-ilmaisua Java-ohjelmoinnissa monin eri tavoin, koska se on loistava tekniikka kirjoittaa ytimekäs koodi toiminnallisesti. Tässä on useita tapauksia, joissa voimme käyttää sitä.
Array Operator Java-kokoelmassa
Tässä kuvassa käytämme lambda-lauseketta tietojen suodattamiseen ArrayLististä. Halutun tuloksen saavuttamiseksi käytimme filter()-menetelmää ja stream API:ta. Näet kuinka paljon yksinkertaisempaa on kirjoittaa lambda-koodi kuin ei-lambda-koodi. Katso alla olevaa kuvaa.
M1.java
package javaexample; import java.util.ArrayList; import java.util.List; import java.util.stream.Stream; class P{ int id; String n; float pri; public P(int id, String n, float pri) { this.id = id; this.n = n; this.pri = pri; } } public class M1{ public static void main(String[] args) { List<p> l = new ArrayList</p><p>(); l.add(new P(1,' JavaTpoint ',17000)); l.add(new P(3,' Tutorial and example ',100500)); l.add(new P(2,' Website ',25000)); // using the arrow to filter data Stream</p><p> filtered_data = l.stream().filter(q -> q.pri > 17000); filtered_data.forEach( p -> System.out.println(p.n+': '+p.pri) ); } } </p>
Lähtö:
etsi merkkijonosta c++
Tutorial and example: 100500.0 Website: 25000.0
Array-operaattori Java-säikeessä
Toteuttaaksemme molempien suoritettavien käyttöliittymien run()-menetelmän, käytimme tässä tapauksessa lambda-lauseketta. Lambda-lauseketta voidaan käyttää helposti, koska Runnablessa on yksi menetelmäliittymä. katso alla olevaa kuvaa.
M3.java
package javaexample; import java.util.ArrayList; import java.util.List; import java.util.stream.Stream; public class M3{ public static void main(String[] args) { // using arrow operator Runnable r1=()->{ System.out.println(' Thread is running... '); }; Thread t1 = new Thread(r1); t1.start(); } }
Lähtö:
Thread is running...