Video: Java 8 - Comparator Lambda Expression 2025
Java có các phương pháp ưa thích sử dụng tối ưu các luồng và biểu thức lambda. Với dòng chảy và biểu thức lambda, bạn có thể tạo ra một dây chuyền lắp ráp. Giải pháp lắp ráp sử dụng các khái niệm từ lập trình chức năng.
Dây chuyền lắp ráp bao gồm một số phương pháp. Mỗi phương pháp lấy dữ liệu, chuyển đổi dữ liệu bằng cách này hay cách khác, và đưa kết quả của nó tới phương pháp tiếp theo. Đây là một dây chuyền lắp ráp.
Mỗi hộp đại diện cho một bó nguyên liệu khi chúng được chuyển đổi theo dây chuyền lắp ráp. Mỗi mũi tên đại diện cho một phương pháp (hoặc, ẩn dụ, một công nhân trên dây chuyền lắp ráp).
Ví dụ: trong quá trình chuyển đổi từ hộp thứ hai sang hộp thứ ba, phương pháp của công nhân (phương pháp
bộ lọc
) sẽ đẩy doanh số bán ra không phải là đĩa DVD. Hãy tưởng tượng Lucy Ricardo đứng giữa hộp thứ hai và thứ ba, loại bỏ từng cuốn sách hoặc đĩa CD khỏi dây chuyền lắp ráp và quăng nó một cách lơ đễnh lên sàn nhà.
của Java là một
Predicate
- một biểu thức lambda có kết quả là
boolean
. Phương pháp
lọc
loại bỏ các mục không vượt qua thử nghiệm
đúng / sai
của lambda.
Một số phương pháp lập trình chức năng
Thành viên | Thông số | Loại kết quả | Giá trị Kết quả | dòng |
Bộ sưu tập
|
(ví dụ:
ArrayList
, đối tượng)
(không có) |
Luồng |
Một luồng spits ra các phần tử của bộ sưu tập
|
bộ lọc |
Dòng
|
Predicate
|
Luồng > Dòng mới có chứa các giá trị mà biểu thức lambda trả về
|
true
|
bản đồ
Stream
|
Chức năng
|
Dòng
|
Một luồng mới chứa kết quả áp dụng biểu thức lambda đến luồng đến
|
Giảm
|
Dòng |
BinaryOperator
|
Loại được sử dụng bởi
|
BinaryOperator
|
Kết quả của việc kết hợp tất cả các giá trị trong dòng đầu
|
bản đồ |
giá
trong mỗi
bán
. Từ vị trí của nhân viên trở lên, dây chuyền lắp ráp chỉ chứa giá trị
giá
.
Để có thể chính xác hơn, phương pháp
bản đồ
của Java phải có
Chức năng
như
(bán) -> bán. getPrice ()
và áp dụng
Chức năng
cho mỗi giá trị trong một luồng. Do đó, phương pháp
bản đồ
sẽ lấy được một dòng
bán
các đối tượng đến và tạo ra một dòng giá trị
giá
đi ra.
Trong quá trình chuyển từ hộp thứ tư sang hộp thứ năm, một phương pháp của công nhân (
giảm
phương pháp) làm tăng giá bán DVD.Phương thức
của Java mất hai tham số:
Tham số đầu tiên là một giá trị ban đầu.
Trong hình trên, giá trị ban đầu là
0. 0
.
Tham số thứ hai là
BinaryOperator
.
Trong hình trên,
giảm
phương pháp
BinaryOperator
là
(giá1, giá2) -> giá1 + giá2
Phương pháp
giảm
sử dụng
BinaryOperator
để kết hợp các giá trị từ dòng gửi đến. Giá trị ban đầu là điểm bắt đầu cho tất cả các kết hợp. Vì vậy,
giảm
phương pháp làm hai bổ sung.
Phương pháp làm giảm thêm hai giá trị từ một luồng đến.
Để so sánh, hãy tưởng tượng gọi phương thức
với dòng có giá trị
3. 0
,
2. 0
và
5. 0
. Hành động kết quả được hiển thị bên dưới
Phương thức giảm giảm giá trị từ một luồng đến.
Có thể bạn đã từng nghe đến mô hình lập trình MapReduce của Google. Sự giống nhau giữa tên của mô hình lập trình và phương pháp Java tên
và
giảm
không phải là một sự trùng hợp ngẫu nhiên.
Được coi là toàn bộ, toàn bộ dây chuyền lắp ráp tăng giá bán đĩa DVD. Đoạn mã trên chứa một chương trình hoàn chỉnh sử dụng các luồng và biểu thức lambda biểu tượng hình ảnh đầu tiên ở trên.
nhập khẩu java. bản văn. NumberFormat;
nhập khẩu java. util. Lập danh sách;
public class TallySales {
public static void main (String [] args) {
ArrayList
sales = new ArrayList <> ();
NumberFormat currency = Số định dạng. getCurrencyInstance ();
tổng cộng gấp đôi = bán hàng. stream ()
. lọc (bán) -> bán. getItem (). equals ("DVD"))
. bản đồ ((bán) -> bán. getPrice ())
. giảm (0, (giá1, giá2) -> giá1 + giá2);
Hệ thống. ngoài. println (đơn vị tiền tệ (tổng cộng));
}
static void fillTheList (ArrayList
sales) {
bán hàng. thêm (Bán mới ("DVD", 15. 00));
doanh thu. thêm (Bán mới ("DVD", 21. 00));
doanh thu. thêm (bán mới ("CD", 5 25));
}
}
Mã yêu cầu Java 8 trở lên. Nếu IDE của bạn được đặt cho một phiên bản Java sớm hơn, bạn có thể phải chỉnh sửa các thiết lập của IDE. Bạn thậm chí có thể phải tải về một phiên bản Java mới hơn.
Sự đậm là một câu lệnh gán Java lớn. Phía bên phải của câu lệnh chứa một chuỗi các cuộc gọi phương thức. Mỗi cuộc gọi phương thức trả về một đối tượng, và mỗi đối tượng như vậy là điều trước khi dấu chấm trong cuộc gọi phương thức tiếp theo. Đó là cách bạn hình thành dây chuyền lắp ráp.
Ví dụ, gần đầu mã đậm, tên
bán hàng
đề cập đến một đối tượng
ArrayList
. Mỗi đối tượng
ArrayList
có phương pháp
dòng suối
. Trong đoạn mã trên,
doanh thu. stream ()
là một cuộc gọi đến
ArrayList
đối tượng
stream
phương pháp.
Phương thức luồng trả về một thể hiện của lớp
Dòng
của Java. (Thật là một bất ngờ!) Vì vậy,
doanh thu. stream ()
đề cập đến một đối tượng
Stream
.
Nhận được tất cả các đĩa DVD bán hàng.
Mỗi đối tượng
có một phương pháp
lọc
. Vì vậy,
doanh thu. suối(). filter_1 () -> sale.getItem () = equals ("DVD"))
là một cuộc gọi đến
Stream
đối tượng
lọc
phương pháp.
Mẫu tiếp tục. Phương thức
Bản đồ
của đối tượng Stream
trả về một đối tượng khác
Stream
- một đối tượng
Stream
có chứa giá.
Nhận giá từ mỗi lần bán DVD.
Với mức
giá mà bạn áp dụng phương pháp
giảm
, mang lại một giá trị
đôi
- tổng giá của đĩa DVD.
Nhận được tổng giá của tất cả các đĩa DVD bán.