- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我对
的定义和用法感到困惑Stream.collect(Supplier supplier, BiConsumer accumulator, BiConsumer combiner)
phương pháp在 Java 8 中。
方法签名包括BiConsumer键入的参数。 BiConsumer FunctionalInterface 定义了一种功能方法 accept(Object, Object) .据我了解,我现在可以使用任何 lambda 表达式,即 congruent到这个功能接口(interface)。
但是Stream.collect中提到的例子JavaDocVí dụ
List asList = stringStream.collect(ArrayList::new, ArrayList::add, ArrayList::addAll);
我不明白为什么ArrayList.add(E e) (单个参数)与 BiConsumer.accept(T t, U u) 一致方法(两个参数),可用作 collect 方法中的累加器函数。
如您所见,我显然缺乏理解并感谢任何解释。
câu trả lời hay nhất
累加器 BiConsumer 的两个参数是 (1) 列表本身和 (2) 要添加到列表中的项目。这:
List asList = stringStream.collect(
ArrayList::new,
ArrayList::add,
ArrayList::addAll
);
等同于:
List asList = stringStream.collect(
() -> new ArrayList<>(),
(list, item) -> list.add(item),
(list1, list2) -> list1.addAll(list2)
);
这将给出与此相同的结果:
List asList = stringStream.collect(
new Supplier<>>() {
@Ghi đè
public ArrayList get() {
return new ArrayList<>();
}
},
new BiConsumer<>,String>() {
@Ghi đè
public void accept(ArrayList list, String item) {
list.add(item);
}
},
new BiConsumer<>,ArrayList>() {
@Ghi đè
public void accept(ArrayList list1, ArrayList list2) {
list1.addAll(list2);
}
}
);
关于java - Java 8 中函数类型全等 lambda 表达式的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26862874/
Các cặp có thứ tự có thể được tạo bằng cách sử dụng lambda và các hàm (một nhược điểm trong Lisp), như được minh họa trong phần Sử dụng lambda cho định nghĩa cons/car/cdr trong SICP. Nó cũng hoạt động với Python
Tôi đang cố gắng gọi một lambda AWS từ một lambda khác và thực hiện chuỗi lambda. Lý do cho điều này là AWS không cung cấp nhiều trình kích hoạt từ cùng một nhóm S3. Tôi đã tạo lambda bằng trình kích hoạt s3. Đầu tiên
Dựa trên mã nguồn sau đây, có vẻ như lambda thông thường có thể thay thế được với lambda mở rộng. fun main(args: Array) { val số = listOf(1, 2, 3) f
Hướng dẫn Giới thiệu về Phép tính Lambda Bài viết này giới thiệu hàm nhân Phép nhân hai số x và y ca
Tôi đang cố gắng tìm ra cách vẽ cây cú pháp cho biểu thức sau. Đầu tiên, điều này biểu hiện chính xác như thế nào? Có vẻ như nó lấy 1 và 2 làm tham số và nếu n bằng 0, nó sẽ chỉ trả về m. Ngoài ra, ai đó có thể chỉ ra phần đầu của cây phân tích hoặc một ví dụ không? Tôi chưa thể tìm thấy một. câu trả lời hay nhất
Trong C++ 0x, tôi muốn biết loại hàm lambda là gì. Cụ thể: #include type1 foo(int x){ return [x](int y)->int{return x * y
Tôi đã thấy câu hỏi này trên một trong những tin tuyển dụng, nó hỏi hàm lambda là gì và nó liên quan như thế nào đến các hàm bậc cao hơn. Tôi đã biết cách sử dụng các hàm lambda nhưng không quá tự tin khi giải thích nó, vì vậy tôi đã tra cứu trên Google một chút và tìm thấy điều này: Cái gì
Thật khó để nói những gì đang được hỏi ở đây. Câu hỏi mơ hồ, mơ hồ, không đầy đủ, quá rộng hoặc hùng biện và không thể trả lời hợp lý ở dạng hiện tại. Để được trợ giúp làm rõ vấn đề này để bạn có thể mở lại, hãy truy cập trung tâm trợ giúp. Đã đóng
Đánh giá (((lambda(xy) (lambda (x) (* xy))) 5 6) 10) trong Đề án Tôi thực sự không biết cách thực hiện!
Tôi đang làm việc với một tập hợp các phiên bản của MyCustomType như sau: fun runAll(vararg command: MyCustomType){ command.forEach { it.myM
Tiền đề của Brian trong lập luận của ông cho câu hỏi "Tác dụng phụ có phải là điều tốt không?" thật thú vị: máy tính là cỗ máy von-Neumann.
Trong Common Lisp, nếu tôi muốn hai hàm chia sẻ trạng thái, tôi sẽ bỏ qua lambda như thế này: (let ((state 1)) (defun inc-state () (in
Đánh giá (((lambda(xy) (lambda (x) (* xy))) 5 6) 10) trong Đề án Tôi thực sự không biết cách thực hiện!
Tham khảo wiki phép tính lambda: Có một số cách có thể để xác định các số tự nhiên trong phép tính lambda
Tôi có một lớp dữ liệu và tôi cần khởi tạo một số Danh sách. Tôi cần lấy giá trị của JsonArray (Tôi đang sử dụng Gson). Tôi đã thực hiện chức năng này: Private fun arrayToList(data: JsonAr
Có một cách viết tắt nào trong sơ đồ cho ((lambda() )) Ví dụ: thay vì ((lambda() (define x 1) (display x))) tôi muốn có thể làm một cái gì đó như (empty-lam
Tôi có phương thức sau trong thư viện Java: public void setColumnComparator(final int columIndex, Final Comparator colu
Tôi đang nghiên cứu một hàm để tính toán các bước di chuyển hiệu quả của các quân cờ trong một ván cờ vua. Chức năng cầm đồ trắng hoạt động. Khi tôi cố gắng khái quát hóa điều này cho nước đi cầm đồ của một trong hai người chơi, tôi đã gặp phải một lệnh gọi hàm bất hợp pháp. Tôi đã thay thế rồi
Hãy xem xét mã này (được biên dịch trên GCC và MSVC): int main() { auto foo = [](auto p){ typedef decltype(p) p_t;
Tôi đang đọc một đoạn mã sử dụng lambda bên trong lambda và tôi muốn kiểm tra nó bằng cách tạo một hàm giả đọc từ một tệp rồi trả về số tối đa và tối thiểu. Đây là những gì tôi nghĩ ra dummy = đường dẫn lambda
Tôi là một lập trình viên xuất sắc, rất giỏi!