Sobes.tech
Junior

Ce sunt expresiile lambda în Java?

sobes.tech AI

Răspuns de la AI

Expresia lambda este o formă concisă pentru funcția anonimă, care implementează metodele unei interfețe funcționale.

Structura: (parametri) -> { corpul expresiei }.

Parte Descriere Exemple
parametri Lista de parametri, poate fi goală. Tipurile pot fi neindicate (se deduc). ()<br>x<br>(x, y)<br>(int x, String y)
-> Operatorul săgeată (arrow operator). Separă parametrii de corp. ->
corp expresie Corpul lambda. Poate fi o expresie sau un bloc de cod. x * x<br>{ System.out.println(x); }

Exemple de utilizare:

  • Implementarea interfețelor funcționale:

    import java.util.function.Consumer;
    
    // Înainte, implementare tradițională cu clasă anonimă
    Consumer<String> consumerAnon = new Consumer<String>() {
        @Override
        public void accept(String s) {
            System.out.println(s);
        }
    };
    consumerAnon.accept("Clasă anonimă tradițională");
    
    // Cu expresie lambda
    Consumer<String> consumerLambda = s -> System.out.println(s);
    consumerLambda.accept("Expresie lambda");
    
  • Lucru cu API-ul Streams:

    import java.util.Arrays;
    import java.util.List;
    import java.util.stream.Collectors;
    
    List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
    
    // Filtrarea numerelor pare cu lambda
    List<Integer> evenNumbers = numbers.stream()
                                      .filter(n -> n % 2 == 0)
                                      .collect(Collectors.toList());
    
    System.out.println(evenNumbers); // Ieșire: [2, 4]
    
    // Transformarea numerelor în pătratele lor
    List<Integer> squares = numbers.stream()
                                  .map(n -> n * n)
                                  .collect(Collectors.toList());
    
    System.out.println(squares); // Ieșire: [1, 4, 9, 16, 25]
    

Avantaje:

  • Reducerea codului comparativ cu clasele anonime.
  • Crește lizibilitatea pentru operații simple.
  • Ușor de utilizat cu API-ul Streams și alte API-uri orientate pe programare funcțională.