logo

Оператор стрелка в Java

Операторът със стрелка (->) в Java е обяснен в тази статия заедно с примерен код, за да ви помогне да разберете концепцията.

Операторът със стрелка, който се използва за създаване на ламбда изрази, беше въведен заедно с добавянето на функционалността на ламбда израз в Java 8. Той разделя тялото на израза от аргументите.

 (parameters) -> { statements; } // Lambda expression having arrow 

За да направи кода на Java по-разбираем и кратък, ламбда изразът, който беше въведен от Java 8, може да се използва на място за анонимни класове.

Илюстрация за това как да се изгради анонимен клас с помощта на Java преди Java 8 е показана по-долу.

размер чаена лъжичка
 Runnable r1 = new Runnable() { @Override public void run() { System.out.print(' method Run '); } }; 

И ето как можем да изпълним гореспоменатата задача в Java 8, използвайки ламбда израз.

 Runnable r1 = ()-> System.out.print(' method Run '); 

За да разберете по-добре как да използвате операторите ламбда и стрелка, нека започнем с някои примери.

Как да използвам Arrow Operator в Java?

В тази илюстрация методът draw() и на интерфейса Drawable е имплементиран с помощта на ламбда израз и оператор със стрелка. Вижте илюстрацията по-долу.

цяло число към низ

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(); } } 

Изход:

Актрисата Ракул Преет Сингх
Оператор стрелка в Java

Можем да използваме ламбда израз в програмирането на Java по различни начини, защото това е страхотна техника за писане на кратък код, използвайки функционален подход. Ето няколко случая, в които можем да го използваме.

Оператор на масив в колекцията на Java

В тази илюстрация използваме ламбда израз за филтриране на данни от ArrayList. За да постигнем желания резултат, използвахме метода filter() и потоковия API. Можете да видите колко по-прост е писането на ламбда код от не-ламбда код. Вижте илюстрацията по-долу.

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,&apos; JavaTpoint &apos;,17000)); l.add(new P(3,&apos; Tutorial and example &apos;,100500)); l.add(new P(2,&apos; Website &apos;,25000)); // using the arrow to filter data Stream</p><p> filtered_data = l.stream().filter(q -&gt; q.pri &gt; 17000); filtered_data.forEach( p -&gt; System.out.println(p.n+&apos;: &apos;+p.pri) ); } } </p>

Изход:

java низ concat
 Tutorial and example: 100500.0 Website: 25000.0 

Оператор на масив в нишката на Java

За да внедрим метода run() и на изпълнявания интерфейс, използвахме ламбда израз в този случай. Ламбда изразът може да се използва с лекота, защото Runnable има интерфейс с един метод. вижте илюстрацията по-долу.

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=()-&gt;{ System.out.println(&apos; Thread is running... &apos;); }; Thread t1 = new Thread(r1); t1.start(); } } 

Изход:

 Thread is running...