Lambda

Lambda expression trong Java cho phép viết các hàm ngắn gọn hơn, thường dùng với các API như Stream, Collections, hoặc khi xử lý hàm callback.


1. filter()

Lọc phần tử trong một danh sách theo điều kiện.

import java.util.*;
import java.util.stream.*;

List<Person> people = List.of(
  new Person("Alice", 20),
  new Person("Bob", 30),
  new Person("Charlie", 40)
);

List<Person> youngPeople = people.stream()
  .filter(p -> p.getAge() <= 30)
  .collect(Collectors.toList());

2. map()

Chuyển đổi các phần tử trong danh sách sang một dạng khác.

List<String> names = people.stream()
  .map(p -> p.getName())
  .collect(Collectors.toList());

3. forEach()

Lặp qua từng phần tử và thực hiện hành động.

people.stream()
  .forEach(p -> System.out.println(p.getName()));

4. sorted()

Sắp xếp danh sách theo tiêu chí cụ thể.

List<Person> sortedList = people.stream()
  .sorted((p1, p2) -> Integer.compare(p1.getAge(), p2.getAge()))
  .collect(Collectors.toList());

5. anyMatch(), allMatch(), noneMatch()

Kiểm tra điều kiện trên các phần tử.

boolean hasTeen = people.stream().anyMatch(p -> p.getAge() < 20);
boolean allAdults = people.stream().allMatch(p -> p.getAge() >= 18);

6. reduce()

Tính toán tổng hợp (giá trị duy nhất) từ stream.

int totalAge = people.stream()
  .map(p -> p.getAge())
  .reduce(0, (a, b) -> a + b);

7. Ví dụ thêm: Lambda với Comparator

Collections.sort(people, (p1, p2) -> p1.getName().compareTo(p2.getName()));

Lambda là gì?

Lambda expression là một biểu thức hàm ẩn danh — không cần đặt tên hàm. Trong Java, Lambda thường được dùng để:

  • Viết hàm gọn hơn (thay vì tạo class implement interface)
  • Dùng trong xử lý Stream API, filter, map, reduce, ...
  • Thay thế cho anonymous class trong functional interface

Cú pháp cơ bản:

(parameters) -> expression
(parameters) -> { statements }

Ví dụ:

(x, y) -> x + y
name -> System.out.println(name)