Wyrażenia lambda to krótka składnia służąca do tworzenia anonimowych funkcji w języku Java. Wprowadzone w Java 8, umożliwiają przekazywanie zachowania jako argumentów metod, co czyni kod bardziej czytelnym i zwięzłym.
Składnia wyrażenia lambda
(parametry) -> { ciało funkcji }
parametry – lista argumentów (może być pusta)
->– operator lambda- ciało funkcji – kod wykonywany po wywołaniu lambdy
Przykłady
- Lambda bez parametrów:
Runnable r = () -> System.out.println("Hello, world!"); new Thread(r).start();
📌 Działa tak samo jak klasy anonimoweRunnable. - Lambda z jednym parametrem
jConsumer<String> print = s -> System.out.println(s); print.accept("Cześć!"); - Lambda z wieloma parametrami
BiFunction<Integer, Integer, Integer> suma = (a, b) -> a + b; System.out.println(suma.apply(5, 10)); // 15
Zastosowanie wyrażeń lambda
Wyrażenia lambda są często stosowane w:
✅ Interfejsach funkcyjnych (np. Predicate, Function, Consumer)
✅ Strumieniach (Stream API)
✅ Wielowątkowości (Runnable)
✅ Sortowaniu kolekcji (Comparator)
Przykład: Sortowanie listy za pomocą lambdy
import java.util.*;
public class Main {
public static void main(String[] args) {
List<String> names = Arrays.asList("Kasia", "Adam", "Zenek", "Bartek");
names.sort((a, b) -> a.compareToIgnoreCase(b));
System.out.println(names); // [Adam, Bartek, Kasia, Zenek]
}
}
Wnioski
✅ Skracają kod – eliminują konieczność pisania klas anonimowych
✅ Czytelniejsze i bardziej zwięzłe niż tradycyjne implementacje interfejsów
✅ Ułatwiają programowanie funkcyjne w Javie