0

Java 8 ile birlikte gelen Lamda Expression nedir ? Örnek kullanımlar

Merhaba arkadaşlar bu yazıda lambda expression ile ilgili bazı notlar almaya çalışacağım isteyen arkadaşlar içinde bir kaynak teşkil eder inşallah. Şimdi nedir bu Lambda Expression ? Daha az kod yazmamızı sağlayan bir özellik. Bildiğiniz gibi programlama dilleri geliştikçe kullanıcıya daha kolay programlama yapıları sunuyor . Yani iş gittikçe kolay’a doğru gidiyor. Kolay’a doğru gidiyor derken aslında vakit kaybını da önlüyor . İşte lamda expression da Tek bir metodu olan Funcitonal Interfaceler ile kullanabileceğimiz bir yapı. Yani ” Any interface with a SAM(Single Abstract Method) is a functional interface” tek bir abstract metodu olan intefaceler.  Eğer tek bir abstract metodu varsa lambda ile verdiğiniz parametreler ve kodlar direk bunun içine yazılmış oluyor. Nasıl mi buyrun örnekler ile inceleyelim. 

Örneğimizde isimleri ve yaşları tutan bir dizi var  ve bir tane de Yazdır adında bir interfacemiz var. Burada önemli nokta şu ki; interfacemizin 1 adet abstract yani gövdesi olmayan metodu var. Yaniiiii bu bir functional interface . o halde burada lambda kullanabiliriz. Bu interfacemizden yaz diye bir nesneyi önce anonim olarak oluşturuyoruz , sonra ise lambda expression ile yazıyoruz. Birisinde dört satırda yapılan işlem diğerinde tek satır. İşte lambda expression bu. 

public interface Yazdir {

    public void ekranaYaz(String yazilacak,int yazilacak2);
}

 

public class Main {

    public static void main(String[] args) {
        // write your code here

        String[] yazilacaklar = {"Veysel ", "Mustafa", "Mehmet", "Abdullah"};
        int[] yaslar={35,6,3,1};

        

/*

        // Anonim class olarak kullanımı

        Yazdir yaz= new Yazdir() {
            @Override
            public void ekranaYaz(String adi,int yas) {

                System.out.println("Isim   : "+ adi+      " Yaş  : "+yas);
            }
        };
*/

// Lambda Expression ile kullanımı

    Yazdir yaz=(String adi,int yas)->{  System.out.println("Isim   : "+ adi+      " Yaş  : "+yas);};

        for (int i=0; i<yaslar.length;i++){


            yaz.ekranaYaz(yazilacaklar[i],yaslar[i]);
        }





    }
}

Şimdi başka bir örnek yapalım. Bu örneğimizde ogrencileri tutan bir listemiz var ( ArrayList ) bunun sort() metodunu kullanırken Comparator interfacesi bir functional interface olduğundan onu kullanarak örnekledik. 

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

public class Main {

    public static void main(String[] args) {
        // write your code here


        ArrayList<Ogrenci> liste=new ArrayList<>();

        Ogrenci ogrenciler1=new Ogrenci("Ahmet DerinKaya","12A",233);
        Ogrenci ogrenciler2=new Ogrenci("Mehmet Sarsılmaz","12A",434);
        Ogrenci ogrenciler3=new Ogrenci("Hakan Akman","12A",533);
        Ogrenci ogrenciler4=new Ogrenci("Hüseyin Şahin","12A",335);
        Ogrenci ogrenciler5=new Ogrenci("Fevzi Karaduman","12A",345);

        liste.add(ogrenciler1);
        liste.add(ogrenciler2);
        liste.add(ogrenciler3);
        liste.add(ogrenciler4);
        liste.add(ogrenciler5);

        // Buraya kadar ogrencileri tutacak listemizi oluşturduk. Şimdi oğrencilerimizi sıralı bir şekilde tutan listemizi
        // oluşturalım.


    /*
         // Lamda Expression kullanmadan

        Collections.sort(liste, new Comparator<Ogrenci>() {
           @Override
           public int compare(Ogrenci o1, Ogrenci o2) {
               return o1.adSoyad.compareTo(o2.adSoyad);
           }
       });*/

    
        // Lambda Expression ile
        Collections.sort(liste,(ogrenci1, ogrenci2)->{

            return ogrenci1.getAdSoyad().compareTo(ogrenci2.adSoyad);
        });

        System.out.println("             12 / A Sınıfı Sınıf Listesi               ");
        System.out.println("-------------------------------------------------------");
        System.out.println("OKUL NO       AD - SOYAD                               ");
        System.out.println("-------       ----------------");


        for (Ogrenci ogrenci:liste
             ) {

            System.out.println(" "+ogrenci.getNumara()+"          "+ ogrenci.getAdSoyad());
        }

    }

}

class Ogrenci{

    String adSoyad;
    String sinif;
    int numara;

    public int getNumara() {
        return numara;
    }

    public void setNumara(int numara) {
        this.numara = numara;
    }

    public Ogrenci(String adSoyad, String sinif, int numara) {
        this.adSoyad = adSoyad;
        this.sinif = sinif;
        this.numara=numara;
    }

    public String getAdSoyad() {
        return adSoyad;
    }

    public void setAdSoyad(String adSoyad) {
        this.adSoyad = adSoyad;
    }

    public String getSinif() {
        return sinif;
    }

    public void setSinif(String sinif) {
        this.sinif = sinif;
    }
}

 

 

admin

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir