Operator puščice (->) v Javi je razložen v tem članku skupaj z nekaj vzorčne kode, ki vam pomaga razumeti koncept.
Operator puščice, ki se uporablja za ustvarjanje lambda izrazov, je bil predstavljen skupaj z dodatkom funkcionalnosti lambda izraza v Javi 8. Loči telo izraza od argumentov.
(parameters) -> { statements; } // Lambda expression having arrow
Da bi bila koda Java bolj razumljiva in jedrnata, lahko namesto anonimnih razredov uporabite izraz lambda, ki ga je uvedla Java 8.
Spodaj je prikazana ilustracija, kako zgraditi anonimni razred z uporabo Jave pred Javo 8.
css ozadje
Runnable r1 = new Runnable() { @Override public void run() { System.out.print(' method Run '); } };
In tukaj je opisano, kako lahko izvedemo zgoraj omenjeno nalogo v Javi 8 z uporabo lambda izraza.
tabela v reakciji
Runnable r1 = ()-> System.out.print(' method Run ');
Da bi bolje razumeli, kako uporabljati lambda in puščice, začnimo z nekaj primeri.
Kako uporabljati Arrow Operator v Javi?
V tej ilustraciji je bila metoda draw() vmesnika Drawable implementirana z uporabo lambda izraza in operatorja puščice. Oglejte si spodnjo ilustracijo.
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(); } }
Izhod:
raztrgati zemljevid
Lambda izraz v programiranju v Javi lahko uporabimo na različne načine, saj je to odlična tehnika za pisanje jedrnate kode s funkcionalnim pristopom. Tu je nekaj primerov, ko ga lahko uporabimo.
Operator polja v zbirki Java
V tej ilustraciji uporabljamo lambda izraz za filtriranje podatkov iz seznama ArrayList. Da bi dosegli želeni rezultat, smo uporabili metodo filter() in stream API. Vidite lahko, koliko enostavnejše je pisanje lambda kode kot kode, ki ni lambda. Oglejte si spodnjo ilustracijo.
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>
Izhod:
32-bitna arhitektura proti 64-bitni
Tutorial and example: 100500.0 Website: 25000.0
Operator polja v niti Java
Da bi implementirali metodo run() obeh zagonskih vmesnikov, smo v tem primeru uporabili lambda izraz. Lambda izraz se lahko uporablja z lahkoto, ker ima Runnable vmesnik z eno samo metodo. glejte spodnjo ilustracijo.
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(); } }
Izhod:
Thread is running...