Bu makalede, Java'daki ok operatörü (->), kavramı kavramanıza yardımcı olacak bazı örnek kodlarla birlikte açıklanmaktadır.
Lambda ifadeleri oluşturmak için kullanılan ok operatörü, Java 8'de lambda ifadesi işlevselliğinin eklenmesiyle birlikte tanıtıldı. İfade gövdesini argümanlardan ayırır.
(parameters) -> { statements; } // Lambda expression having arrow
Java kodunu daha anlaşılır ve özlü hale getirmek için, Java 8'in getirdiği lambda ifadesi anonim sınıflar için kullanılabilir.
Java 8'den önce Java kullanılarak anonim bir sınıfın nasıl oluşturulacağına ilişkin bir örnek aşağıda gösterilmiştir.
bilgisayar organizasyonu ve mimarisi
Runnable r1 = new Runnable() { @Override public void run() { System.out.print(' method Run '); } };
Yukarıda bahsedilen görevi Java 8'de lambda ifadesini kullanarak nasıl gerçekleştirebileceğimiz aşağıda açıklanmıştır.
Runnable r1 = ()-> System.out.print(' method Run ');
Lambda ve ok operatörlerinin nasıl kullanılacağını daha iyi kavramak için bazı örneklerle başlayalım.
Java'da Ok Operatörü nasıl kullanılır?
Bu çizimde, hem Drawable arayüzünün Draw() yöntemi, bir lambda ifadesi hem de ok operatörü kullanılarak uygulanmıştır. Aşağıdaki resme bakın.
M.java
Java'da özyineleme
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(); } }
Çıktı:
Lambda ifadesini Java programlamada çeşitli şekillerde kullanabiliriz çünkü bu, işlevsel bir yaklaşım kullanarak kısa ve öz kod yazmak için harika bir tekniktir. İşte kullanabileceğimiz birkaç örnek.
Java koleksiyonundaki Dizi Operatörü
Bu çizimde, bir ArrayList'teki verileri filtrelemek için bir lambda ifadesi kullanıyoruz. İstenilen sonuca ulaşmak için filter() yöntemini ve akış API'sini kullandık. Lambda kodunun, lambda olmayan koda göre ne kadar basit yazıldığını görebilirsiniz. Aşağıdaki resme bakın.
java lambda ifadeleri
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>
Çıktı:
c++ haritasında bul
Tutorial and example: 100500.0 Website: 25000.0
Java iş parçacığında dizi operatörü
Her iki çalıştırılabilir arayüzün de run() metodunu uygulamak için bu örnekte lambda ifadesini kullandık. Runnable'ın tek bir yöntem arayüzüne sahip olması nedeniyle lambda ifadesi kolaylıkla kullanılabilir. aşağıdaki resme bakın.
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(); } }
Çıktı:
Thread is running...