Sobes.tech
Junior

Mis on lambda väljendid Java's?

sobes.tech AI

Vastus AI-lt

Lambda-väljendus on lühike vorm anonüümsele funktsioonile, mis rakendab funktsionaalset liidest meetodeid.

Struktuur: (parameetrid) -> { väljenduse keha }.

Osa Kirjeldus Näited
parameetrid Parameetrite nimekiri, võib olla tühi. Tüübid võivad olla määramata (välja näidatud). ()<br>x<br>(x, y)<br>(int x, String y)
-> Noole operaator (arrow operator). Eraldab parameetrid kehaosast. ->
väljenduse keha Lambdaväljendi keha. Võib olla väljend või koodiplokk. x * x<br>{ System.out.println(x); }

Kasutusnäited:

  • Funktsionaalsete liideste rakendamine:

    import java.util.function.Consumer;
    
    // Enne traditsioonilist anonüümse klassi rakendust
    Consumer<String> consumerAnon = new Consumer<String>() {
        @Override
        public void accept(String s) {
            System.out.println(s);
        }
    };
    consumerAnon.accept("Traditsiooniline anonüümne klass");
    
    // Lambda väljendiga
    Consumer<String> consumerLambda = s -> System.out.println(s);
    consumerLambda.accept("Lambda väljend");
    
  • Töötamine Streams API-ga:

    import java.util.Arrays;
    import java.util.List;
    import java.util.stream.Collectors;
    
    List<Integer> arvud = Arrays.asList(1, 2, 3, 4, 5);
    
    // Paari arvude filtreerimine lambda-ga
    List<Integer> paarArvud = arvud.stream()
                                      .filter(n -> n % 2 == 0)
                                      .collect(Collectors.toList());
    
    System.out.println(paarArvud); // Väljund: [2, 4]
    
    // Arvude muutmine nende ruutudeks
    List<Integer> ruudud = arvud.stream()
                                  .map(n -> n * n)
                                  .collect(Collectors.toList());
    
    System.out.println(ruudud); // Väljund: [1, 4, 9, 16, 25]
    

Eelised:

  • Kood lühem võrreldes anonüümsete klassidega.
  • Loetavus lihtsate operatsioonide puhul suureneb.
  • Mugav kasutada Streams API ja teisi API-sid, mis on suunatud funktsionaalsele programmeerimisele.