Lambda expressions trong Java, giới thiệu từ Java 8, là một tính năng mạnh mẽ giúp viết mã ngắn gọn và rõ ràng hơn, đặc biệt khi sử dụng các API dựa trên collection và stream. Lambda cho phép bạn triển khai các interface chỉ có một phương thức trừu tượng (functional interface) một cách nhanh chóng và dễ dàng mà không cần định nghĩa một class đầy đủ.
Cú pháp của Lambda Expression:
Lambda expression bao gồm một danh sách tham số, dấu mũi tên (->
), và một thân biểu thức hoặc khối mã:
(parameter1, parameter2, ...) -> expression
hoặc
(parameter1, parameter2, ...) -> { statements; }
- Nếu chỉ có một tham số và không có kiểu dữ liệu, bạn có thể bỏ qua dấu ngoặc đơn.
- Nếu biểu thức chỉ có một dòng, bạn có thể bỏ qua dấu ngoặc nhọn và từ khóa
return
.
Ví dụ sử dụng Lambda Expression:
1. Sử dụng với Thread:
Trước Java 8:
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("Hello from thread before Java 8");
}
}).start();
Với Lambda:
new Thread(() -> System.out.println("Hello from thread with Lambda")).start();
2. Sử dụng với Collections:
Sắp xếp một danh sách:
Trước Java 8:
Collections.sort(names, new Comparator<String>() {
@Override
public int compare(String a, String b) {
return a.compareTo(b);
}
});
Với Lambda:
Collections.sort(names, (a, b) -> a.compareTo(b));
3. Sử dụng với Stream API:
Lambda kết hợp với Stream API giúp thao tác với collections mạnh mẽ và linh hoạt:
List<String> filtered = names.stream()
.filter(name -> name.startsWith("J"))
.collect(Collectors.toList());
Lưu ý:
- Lambda expression chỉ có thể được sử dụng với các interface có một phương thức trừu tượng (functional interface), nhưng có thể có nhiều phương thức mặc định hoặc static.
- Lambda expressions giúp code trở nên sạch sẽ và dễ đọc hơn, đặc biệt khi sử dụng các thao tác trên collections hoặc khi bạn cần triển khai một interface với một phương thức trừu tượng mà không cần một định nghĩa class đầy đủ.
Lambda expressions là một tính năng mạnh mẽ của Java 8 trở lên, giúp lập trình hàm trở nên dễ dàng và linh hoạt hơn trong việc viết mã.
Comments