Sobes.tech
Junior

Javaда лямбда билдирүүлөрү эмне?

sobes.tech AI

AIден жооп

Лямбда-экспрессия — бул анонимдүү функция үчүн кыска форма, ал функционалдык интерфейс ыкмаларын ишке ашырат.

Түзүмү: (параметрлер) -> { билдирүүнүн денеси }.

Бөлүк Түшүндүрмө Мисалдар
параметрлер Параметрлердин тизмеси, бош болушу мүмкүн. Типтери көрсөтүлбөйт (чыгарылат). ()<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("Лямбда экспрессиясы");
    
  • Streams API менен иштөө:

    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]
    

Артыкчылыктары:

  • Кодду кыскаратат анонимдүү класстарга салыштырмалуу
  • Жөнөкөй операциялар үчүн окумдуулугун жогорулатат
  • Streams API жана башка APIлер менен колдонууга ыңгайлуу, функционалдык программалоого багытталган.