Sobes.tech
Middle

Javaда лямбда-экспрессиялар эмне жана алар кандай мүмкүнчүлүктөрдү камсыздайт?

sobes.tech AI

AIден жооп

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

Синтаксиси: (параметрлер) -> { дене }

Мүмкүнчүлүктөрү:

  1. Функционалдык интерфейс: Лямбда-экспрессия функционалдык интерфейс түрүнө (бир абстракттуу методу бар интерфейс) белгилениши мүмкүн.
    // Функционалдык интерфейс  
    @FunctionalInterface  
    интерфейс MyInterface {  
        void myMethod();  
    }  
    
    // Лямбда-экспрессияны колдонуу  
    MyInterface lambda = () -> System.out.println("Hello from lambda!");  
    lambda.myMethod();  
    
  2. Кодду жөнөкөйлөтүү: Анонимдүү ички класстарды функционалдык интерфейстерди ишке ашыруу үчүн алмаштырат.
    // Java 8ге чейин (анонимдүү класс)  
    Thread thread1 = new Thread(new Runnable() {  
        @Override  
        public void run() {  
            System.out.println("Old way");  
        }  
    });  
    
    // Java 8ден кийин (лямбда)  
    Thread thread2 = new Thread(() -> System.out.println("Lambda way"));  
    
  3. Stream APIде колдонуу: Stream API менен интеграцияланып, коллекциялар боюнча операцияларды аткаруу.
    List<String> names = Arrays.asList("Alice", "Bob", "Charlie");  
    names.stream()  
         .filter(name -> name.startsWith("A")) // Лямбда-экспрессия  
         .forEach(System.out::println);        // Лямбда-экспрессия (метод-ссылка)  
    
  4. Кечиктирилген ишке ашыруу: Лямбда-экспрессиянын ичинде код функционалдуу метод чакырылганда гана ишке ашырылат.
  5. Көрүнүү чөйрөлөрү: Лямбда-экспрессиялар сырткы чөйрөдөн өзгөрмөлөрдү алууга мүмкүнчүлүк берет (жергиликтүү өзгөрмөлөр финалдуу же effectively final болушу керек).
Артыкчылык Description
Коддун кыска болушу Анонимдүү класстарга салыштырмалуу "көп сөздүүлүктү" азайтат.
Окууга жеңилдик Кодду кыска жана түшүнүктүү кылат.
Параллелдүү иштетүү Stream API аркылуу параллелдүү операцияларды колдойт.