Hướng dẫn Java

TRANG CHỦ Java Giới thiệu Java Java Bắt đầu Cú pháp Java Nhận xét Java Các biến Java Các kiểu dữ liệu Java Truyền kiểu Java Toán tử Java Chuỗi Java Toán Java Java Booleans Java Nếu ... Khác Chuyển đổi Java Java While Loop Java cho vòng lặp Ngắt / Tiếp tục Java Mảng Java

Phương thức Java

Phương thức Java Các tham số phương pháp Java Nạp chồng phương pháp Java Phạm vi Java Đệ quy Java

Các lớp Java

Java OOP Các lớp / đối tượng Java Thuộc tính lớp Java Phương thức lớp Java Trình tạo Java Các công cụ sửa đổi Java Đóng gói Java Gói / API Java Kế thừa Java Đa hình Java Các lớp bên trong Java Tóm tắt Java Giao diện Java Java Enums Đầu vào của người dùng Java Ngày Java Java ArrayList Java LinkedList Java HashMap Java HashSet Trình lặp lại Java Các lớp Java Wrapper Các trường hợp ngoại lệ của Java Java RegEx Chủ đề Java Java Lambda

Xử lý tệp Java

Tệp Java Java Tạo / Viết tệp Java đọc tệp Java Xóa tệp

Java Cách thực hiện

Thêm hai số

Tham khảo Java

Từ khóa Java Phương thức chuỗi Java Phương pháp toán học Java

Ví dụ về Java

Ví dụ về Java Trình biên dịch Java Bài tập Java Java Quiz Chứng chỉ Java


Biểu thức Lambda Java


Biểu thức Lambda Java

Biểu thức Lambda đã được thêm vào Java 8.

Biểu thức lambda là một khối mã ngắn nhận tham số và trả về giá trị. Các biểu thức Lambda tương tự như các phương thức, nhưng chúng không cần tên và chúng có thể được triển khai ngay trong phần thân của một phương thức.


Cú pháp

Biểu thức lambda đơn giản nhất chứa một tham số và một biểu thức:

parameter -> expression

Để sử dụng nhiều hơn một tham số, hãy đặt chúng trong dấu ngoặc đơn:

(parameter1, parameter2) -> expression

Diễn đạt bị hạn chế. Chúng phải trả về ngay một giá trị và chúng không thể chứa các biến, phép gán hoặc câu lệnh như ifhoặc for. Để thực hiện các hoạt động phức tạp hơn, một khối mã có thể được sử dụng với các dấu ngoặc nhọn. Nếu biểu thức lambda cần trả về một giá trị, thì khối mã phải có một returncâu lệnh.

(parameter1, parameter2) -> { code block }

Sử dụng biểu thức Lambda

Biểu thức lambda thường được truyền dưới dạng tham số cho một hàm:

Thí dụ

Sử dụng biểu thức lamba trong phương thức ArrayList's forEach()để in mọi mục trong danh sách:

import java.util.ArrayList;

public class Main {
  public static void main(String[] args) {
    ArrayList<Integer> numbers = new ArrayList<Integer>();
    numbers.add(5);
    numbers.add(9);
    numbers.add(8);
    numbers.add(1);
    numbers.forEach( (n) -> { System.out.println(n); } );
  }
}

Các biểu thức Lambda có thể được lưu trữ trong các biến nếu kiểu của biến là một giao diện chỉ có một phương thức. Biểu thức lambda phải có cùng số lượng tham số và cùng kiểu trả về với phương thức đó. Java có nhiều loại giao diện được tích hợp sẵn, chẳng hạn như Consumergiao diện (được tìm thấy trong java.utilgói) được sử dụng bởi các danh sách.

Thí dụ

Sử dụng giao diện của Java Consumerđể lưu trữ một biểu thức lambda trong một biến:

import java.util.ArrayList;
import java.util.function.Consumer;

public class Main {
  public static void main(String[] args) {
    ArrayList<Integer> numbers = new ArrayList<Integer>();
    numbers.add(5);
    numbers.add(9);
    numbers.add(8);
    numbers.add(1);
    Consumer<Integer> method = (n) -> { System.out.println(n); };
    numbers.forEach( method );
  }
}

Để sử dụng biểu thức lambda trong một phương thức, phương thức phải có một tham số với giao diện một phương thức làm kiểu của nó. Việc gọi phương thức của giao diện sẽ chạy biểu thức lambda:

Thí dụ

Tạo một phương thức lấy biểu thức lambda làm tham số:

interface StringFunction {
  String run(String str);
}

public class Main {
  public static void main(String[] args) {
    StringFunction exclaim = (s) -> s + "!";
    StringFunction ask = (s) -> s + "?";
    printFormatted("Hello", exclaim);
    printFormatted("Hello", ask);
  }
  public static void printFormatted(String str, StringFunction format) {
    String result = format.run(str);
    System.out.println(result);
  }
}