Lambdy w Java to funkcje anonimowe, które umożliwiają zwięzłe przekazywanie bloków kodu do metod. Wprowadzone w Java 8, znacznie upraszczają kod poprzez eliminację potrzeby używania anonimowych klas wewnętrznych. Lambdy są szczególnie przydatne w operacjach na kolekcjach, takich jak iteracje, filtracje czy mapowania.
Przykład użycia lambdy
W tym przykładzie przedstawimy sposób użycia lambdy do filtrowania listy osób po kryterium wieku. Utworzymy klasę Person
z dwoma polami: imieniem i wiekiem, a następnie użyjemy lambdy do wybrania osób pełnoletnich.
Klasa Person
public class Person {
String name;
int age;
// Konstruktor
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// Gettery
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
Filtrowanie z użyciem lambdy
W głównej klasie programu zdefiniujemy listę osób i przefiltrujemy ją, aby wyświetlić tylko pełnoletnie osoby.
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class LambdaDemo {
public static void main(String[] args) {
// Lista osób
List<Person> people = new ArrayList<>();
people.add(new Person("Jan", 18));
people.add(new Person("Anna", 16));
people.add(new Person("Paweł", 21));
// Filtrowanie osób pełnoletnich z użyciem lambdy
List<Person> adults = people.stream()
.filter(p -> p.getAge() >= 18)
.collect(Collectors.toList());
// Wyświetlanie pełnoletnich osób
adults.forEach(a -> System.out.println(a.getName()));
}
}
Wyjaśnienie kodu
- Używamy strumieni (
stream()
) do przetworzenia listy osób. Strumienie to sekwencje elementów wspierające sekwencyjne i równoległe operacje agregujące. - Metoda
filter()
przyjmuje lambdę jako argument, określającą kryterium filtrowania. W naszym przypadku filtrujemy osoby pełnoletnie (p.getAge() >= 18
). - Na koniec, za pomocą metody
collect()
, zbieramy wyniki do nowej listy. - Wyświetlamy nazwy osób pełnoletnich za pomocą metody
forEach()
, również korzystając z lambdy do określenia akcji dla każdego elementu listy.
Podsumowanie
Lambdy w Java umożliwiają tworzenie czystszego i bardziej zwięzłego kodu, szczególnie przy manipulacji kolekcjami i wykonaniu operacji takich jak filtracja, mapowanie czy iteracja. Dzięki lambdom, Java staje się bardziej funkcjonalna, a programowanie w niej – przyjemniejsze i efektywniejsze. Wprowadzenie lambd w Java 8 było znaczącym krokiem w ewolucji języka, otwierającym nowe możliwości dla programistów.
Jeżeli chcesz przyśpieszyć swoją naukę tworzenia stron chciałbym polecić mój kurs video Java w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.