Sobes.tech
Junior

Java'da lambda ifodalar nima?

sobes.tech AI

AIdan javob

Lambda ifodasi — bu nomli funksiyani uchun qisqa shaklidir va funksional interfeys metodlarini amalga oshiradi.

Tuzilishi: (parametrlar) -> { ifoda tanasi }.

Qism Tavsifi Misollar
parametrlar Parametrlar ro'yxati, bo'sh bo'lishi mumkin. Turlar ko'rsatilmasligi mumkin (taxmin qilinadi). ()<br>x<br>(x, y)<br>(int x, String y)
-> O'q operatori (arrow operator). Parametrlar va tanani ajratadi. ->
ifoda tanasi Lambda tanasi. Ifoda yoki kod blokidan iborat bo'lishi mumkin. x * x<br>{ System.out.println(x); }

Foydalanish misollari:

  • Funktsional interfeyslarni amalga oshirish:

    import java.util.function.Consumer;
    
    // An'anaviy, anonim sinf bilan amalga oshirish
    Consumer<String> consumerAnon = new Consumer<String>() {
        @Override
        public void accept(String s) {
            System.out.println(s);
        }
    };
    consumerAnon.accept("An'anaviy anonim sinf");
    
    // Lambda ifodasi bilan
    Consumer<String> consumerLambda = s -> System.out.println(s);
    consumerLambda.accept("Lambda ifodasi");
    
  • Streams API bilan ishlash:

    import java.util.Arrays;
    import java.util.List;
    import java.util.stream.Collectors;
    
    List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
    
    // Juft sonlarni filtrlash (lambda bilan)
    List<Integer> evenNumbers = numbers.stream()
                                      .filter(n -> n % 2 == 0)
                                      .collect(Collectors.toList());
    
    System.out.println(evenNumbers); // Natija: [2, 4]
    
    // Sonlarni kvadratlariga aylantirish
    List<Integer> squares = numbers.stream()
                                  .map(n -> n * n)
                                  .collect(Collectors.toList());
    
    System.out.println(squares); // Natija: [1, 4, 9, 16, 25]
    

Afzalliklari:

  • Anonim sinflarga nisbatan kodni qisqartiradi.
  • Oddiy operatsiyalar uchun o'qilishi osonroq.
  • Streams API va boshqa funksional dasturlash API'lari bilan qulay foydalanish imkonini beradi.