Hãy xem mã bên dưới.Làm thế nào một biểu thức lambda ánh xạ vào một giao diện chức năng?
List<String> names = Arrays.asList("Adam", "Brian", "Supun");
List<Integer> lengths = names.stream()
.map(name -> name.length())
.collect(Collectors.toList());
Và đơn giản sau đó sẽ xem javadoc cho streams.map
. Có chữ ký cho phương thức map
xuất hiện như thế này.
<R> Stream<R> map(Function<? super T,? extends R> mapper)
ai đó có thể vui lòng giải thích cách JVM bản đồ biểu thức lambda chúng tôi đã cung cấp (name -> name.length()
) về Function<? super T,? extends R> mapper
?
Bạn đang cố gắng hoàn thành điều gì? Bạn không bao giờ cần tạo các biến cục bộ của loại Luồng. Bạn đang tìm kiếm 'names.stream(). Map (...). Thu thập (Collectors.toList())'? Ngoài ra, không sử dụng loại Danh sách thô. – Michael
@Michael thực sự tôi cần người xem tập trung vào phần biểu hiện lambda. Vì vậy, tôi đã không thêm các bổ sung thứ hai mà bạn đã đề cập. Điều này chỉ là để hiểu được bản đồ lambda thành một giao diện chức năng. Không có gì khác. :)) –
@Michael có quan điểm của bạn. Cảm ơn bạn. :)) Hy vọng tôi đã sửa mã. –