Sobes.tech
Junior

Kas ir lambda izteiksmes Java?

sobes.tech AI

Atbilde no AI

Lambdas izteiksme — tā ir īsa forma anonīmas funkcijas, kas realizē funkcionāla interfeisa metodes.

Struktūra: (parametri) -> { izteiksmes ķermenis }.

Daļa Apraksts Piemēri
parametri Parametru saraksts, var būt tukšs. Tipi var netikt norādīti (izvadīti). ()<br>x<br>(x, y)<br>(int x, String y)
-> Pīles operators (arrow operator). Atdala parametrus no ķermeņa. ->
izteiksmes ķermenis Lambdas ķermenis. Var būt izteiksme vai koda bloks. x * x<br>{ System.out.println(x); }

Piemēri izmantošanai:

  • Funkcionālo interfeisu realizācija:

    import java.util.function.Consumer;
    
    // Pirms tradicionālās anonīmo klases realizācijas
    Consumer<String> consumerAnon = new Consumer<String>() {
        @Override
        public void accept(String s) {
            System.out.println(s);
        }
    };
    consumerAnon.accept("Tradicionālā anonīmā klase");
    
    // Ar lambda izteiksmi
    Consumer<String> consumerLambda = s -> System.out.println(s);
    consumerLambda.accept("Lambda izteiksme");
    
  • Darbs ar Streams API:

    import java.util.Arrays;
    import java.util.List;
    import java.util.stream.Collectors;
    
    List<Integer> skaitļi = Arrays.asList(1, 2, 3, 4, 5);
    
    // Pāru skaitļu filtrēšana ar lambda
    List<Integer> pāruSkaitļi = skaitļi.stream()
                                      .filter(n -> n % 2 == 0)
                                      .collect(Collectors.toList());
    
    System.out.println(pāruSkaitļi); // Izvade: [2, 4]
    
    // Skaitļu pārvēršana to kvadrātos
    List<Integer> kvadrāti = skaitļi.stream()
                                  .map(n -> n * n)
                                  .collect(Collectors.toList());
    
    System.out.println(kvadrāti); // Izvade: [1, 4, 9, 16, 25]
    

Priekšrocības:

  • Saīsināt kodu salīdzinājumā ar anonimajām klasēm.
  • Uzlabot lasāmību vienkāršām operācijām.
  • Ērti lietot ar Streams API un citiem API, kas orientēti uz funkcionālo programmēšanu.