Bu Sayfayı Paylaş:

Kavram

Lambda

Tanım: Tek methodu olan interface'leri kolay bir şekilde implement edip kullanılmasını sağlayan özellik. parameterler -> methodu'un içeriği şeklinde yazılırsa , verilen parametrelere göre method içindeki kod çalıştırılır. Java 8 ile gelen bir özelliktir

Örnek

İnteface ile Lambda Kullanımı

Aşağıdaki gibi bir interface yaratmış olalım.
public interface SumInterface {
	public int sum(int x,int y);
}
Bu interface aşağıdaki gibi kullanılabilir:
SumInterface s1 = (x, y) -> x + y; 
int sum = s1.sum(3, 4);
System.out.println("top 1 : " + sum);
Yukarıdaki örnekte SumInterface'i implement eden bir s1 nesnesi yarattık. Bu nesne SumInterface'inin sum methodunu override ediyor ve x+y şeklinde gelen parametreleri toplayıp geri döndürüyor. s1 nesnesini yarattıktan sonra sum(3,4) şeklinde çağrılırsa sonuç 7 olarak alınacaktır. Aynı interface'si aşağıdaki gibi de implement edelim :
SumInterface s2 = (x, y) -> 2*x + 2*y; 
int sum2 = s2.sum(3, 4);
System.out.println("top 2 : " + sum2);
Bu örnekte s2 , sayıları önce iki ile çarpıp sonra toplamaktadır.

Örnek

Runnable İle Lambda Kullanan Örnek

Normalde bir Runnable kullanmak için aşağıdaki gibi anonymous class yaratılır :
Runnable r1=new Runnable() {

    @Override
    public void run() {

        System.out.println("Running...");

    }
};

r1.run();
Aynı örnek lambda ile yapılırsa
Runnable r1 =  () -> System.out.println("Running...");
		
r1.run();
Görüldüğü gibi kod daha kısa bir şekilde yazılmış olacaktır. run methodu parametre almadığı için () yazılması yeterlidir.

Örnek

Comparator ile Lambda Kullanan Örnek

Normalde bir dizi Comparator ile kullanılıra aşağıdaki gibi kullanılmaktadır :
List<User> list=new ArrayList<User>();
list.add(new User("Ali Kemal"));
list.add(new User("Ahmet Kaya"));
list.add(new User("Deniz Sert"));
list.add(new User("Mehmet Temiz"));

Collections.sort(list,
	new Comparator<User>(){
    	public int compare(User u1, User u2){
    		return u1.getName().compareTo(u2.getName());
    	}
    }
);

for (User user : list) {
	System.out.println(user.getName());
}
Yukarıdaki örneği Lambda ile yaparsak :
List<User> list=new ArrayList<User>();
list.add(new User("Ali Kemal"));
list.add(new User("Ahmet Kaya"));
list.add(new User("Deniz Sert"));
list.add(new User("Mehmet Temiz"));

Collections.sort(list,
	(u1,u2) ->  u1.getName().compareTo(u2.getName())
);

for (User user : list) {
	System.out.println(user.getName());
}
Görüldüğü gibi kod daha sadeleşmiştir



Bu Sayfayı Paylaş:

İletişim Bilgileri

Takip Et

Her Hakkı Saklıdır. Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir. Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir