Những điều thú vị ít ai biết về Lambda Expression

15:32 03/04/2023

Lambda Expressions (Biểu thức Lambda) là một trong những tính năng mới được giới thiệu trong Java 8, được định nghĩa như một hàm ẩn danh, cho phép người dùng chuyển các phương thức làm đối số.

Định nghĩa về Lambda Expression

  • Là một hàm không có tên (anonymous function) với các tham số (parameters) và nội dung thực thi (body).
  • Nội dung thực thi của Lambda expression có thể là một khối lệnh hoặc một biểu thức.
  • Dấu “->” tách biệt các tham số và nội dung thực thi.

Cú pháp trong Lambda Expression (argument-list) -> {body}

  • Argument-list : danh sách tham số, có thể không có, có một hoặc nhiều tham số.
  • Arrow-operator: toán tử mũi tiên được sử dụng để liên kết danh sách tham số và body của biểu thức.
  • Body: nội dung thực thi, là 1 khối lệnh hoặc 1 biểu thức.

Ví dụ về Lambda Expression

() -> “Hello”  Không có tham số và trả về một chuỗi

(double x) -> x + 1 Có một tham số x và trả về giá trị tham số tăng lên 1

(int x, int y) -> x + y Có 2 tham số kiểu int và trả về tổng

Một số quy tắc trong Lambda Expression

Có thể bỏ qua kiểu dữ liệu của parameter truyền vào

(String msg) -> {System.out.println (msg);}
=> (msg) -> {System.out.println (msg);}

Nếu không có parameter, bỏ dấu () trống

() -> {System.out.println (“Hello”);}

Nếu chỉ có 1 parameter, có thể bỏ luôn dấu ()

(double x) -> x + 1
=> x -> x+1

Nếu anonymous function chỉ có 1 câu lệnh , có thể bỏ dấu {}

(msg) -> {System.out.println (msg);}
=> msg -> System.out.println (msg);

Nếu chỉ return 1 giá trị , có thể bỏ chữ return

x -> return x + 1
=> x -> x + 1

Ứng dụng của Lambda Expression

  • Duyệt List

Cách 1 – for i

for (int i = 0; i < listNV.size(); i++) {

listNV.get(i).xuat();

}

Cách 2 – for each

for(NhanVien x:listNV){

x.xuat();

}

Cách 3 – biểu thức Lambda

listNV.forEach(x -> {

x.xuat();

});

  • Sắp xếp chuỗi

Cách thông thường

ublic void sortByName() {

Comparator com = new Comparator< Staff >() {

@Override

public int compare(Staff o1, Staff o2) {

return o1.getName ().compareTo(o2.getName ());

}

};

listNV.sort(com);

System.out.println(“DSNV sắp theo họ tên là:”);

xuatDSNV();

}

Cách dùng Lambda theo Collections

public void sortByName () {

Collections.sort(listNV, (Staff o1, Staff o2)

-> {

return o1.getName ().compareToIgnoreCase(o2.getName ());

});

System.out.println(“DSNV sắp theo họ tên là:”);

xuatDSNV();

}

Cách dùng Lambda theo Collections nhưng rút gọn 

public void sortByName () {

listNV.sort((o1, o2)-> {

return o1.getName ().compareTo(o2.getName ());

});

System.out.println(“DSNV sắp theo họ tên là:”);

xuatDSNV();

Trên đây là một vài cách sử dụng Lambda Expression cơ bản để giúp tăng tốc độ code, thuận tiện hơn cho người dùng sử dụng trong công việc. Chúc các bạn sẽ thực hiện thành công các thao tác nhé!

Giảng viên Nguyễn Thị Như Trang

Bộ môn Ứng dụng phần mềm

Trường Cao đẳng FPT Mạng cá cược bóng đá cơ sở Hà Nội

Cùng chuyên mục

Đăng Kí học Fpoly 2023

Bình Luận