Sobes.tech
Junior

Šta su lambda izrazi u Javi?

sobes.tech АИ

Одговор од АИ

Ламбда израз је кратак облик за анонимску функцију, која реализује методе функционалног интерфејса.

Структура: (параметри) -> { тело израза }.

Чланак Опис Примери
параметри Листа параметара, може бити празан. Типови могу бити нејасни (изведени). ()<br>x<br>(x, y)<br>(int x, String y)
-> Оператор стрелице (arrow operator). Делује као раздвајач између параметара и тела. ->
тело израза Тело ламбда израза. Може бити израз или блок кода. x * x<br>{ System.out.println(x); }

Примери употребе:

  • Реализација функционалних интерфејса:

    import java.util.function.Consumer;
    
    // Пре традиционалне реализације анонимног класа
    Consumer<String> consumerAnon = new Consumer<String>() {
        @Override
        public void accept(String s) {
            System.out.println(s);
        }
    };
    consumerAnon.accept("Традиционална анонимна класа");
    
    // Са коришћењем ламбда израза
    Consumer<String> consumerLambda = s -> System.out.println(s);
    consumerLambda.accept("Ламбда израз");
    
  • Рад са API-јем Streams:

    import java.util.Arrays;
    import java.util.List;
    import java.util.stream.Collectors;
    
    List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
    
    // Филтрирање парних бројева са ламбда
    List<Integer> evenNumbers = numbers.stream()
                                      .filter(n -> n % 2 == 0)
                                      .collect(Collectors.toList());
    
    System.out.println(evenNumbers); // Излаз: [2, 4]
    
    // Претварање бројева у њихове квадрате
    List<Integer> squares = numbers.stream()
                                  .map(n -> n * n)
                                  .collect(Collectors.toList());
    
    System.out.println(squares); // Излаз: [1, 4, 9, 16, 25]
    

Предности:

  • Скратити код у поређењу са анонимним класама.
  • Повећати читљивост за једноставне операције.
  • Удобност коришћења са API-јем као што је Streams и другим API-јем оријентисаним на функционално програмирање.