- Siêu lớp và danh mục iOS/Objective-C
- object-c - -1001 lỗi khi NSURLSession vượt qua httpproxy và /etc/hosts
- java - Nhận địa chỉ url bằng lớp mạng
- ios - Âm thanh không phát trong thông báo đẩy
Nếu tôi thực thi đoạn mã sau để "kết nối" hai luồng
Luồng<>>
Luồng<>>
sử dụng Stream.concat()
Tôi nhận được kết quả chính xác như nhau trong cả hai trường hợp, nhưng với số lượng thao tác lọc khác nhau.
lớp công khai FlatMapVsReduce {
public static void main(String[] args) {
List list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);
Vị ngữ vị ngữ1 = i -> {
System.out.println("kiểm tra điều kiện đầu tiên với " + i);
trả lại tôi == 3;
};
Vị ngữ vị ngữ2 = i -> {
System.out.println("kiểm tra điều kiện thứ hai với " + i);
trả lại tôi == 7;
};
System.out.println("Thử nghiệm với FlatMap");
Kết quả số nguyên1 =
Stream.of(list.stream().filter(predicate1),
list.stream().filter(predicate2))
.flatMap(Function.identity())
.peek(i -> System.out.println("nhìn trộm " + i))
.findFirst()
.orElse(null);
System.out.println("result1 = " + result1);
System.out.println();
System.out.println("Thử nghiệm bằng cách giảm");
Kết quả số nguyên2 =
Stream.of(list.stream().filter(predicate1),
list.stream().filter(predicate2))
.reduce(Stream::concat)
.orElseGet(Stream::empty)
.peek(i -> System.out.println("nhìn trộm " + i))
.findFirst()
.orElse(null);
System.out.println("result2 = " + result2);
}
}
Tôi nhận được kết quả mong đợi (3) trong cả hai trường hợp. Tuy nhiên, thao tác đầu tiên áp dụng bộ lọc đầu tiên cho mọi phần tử trong bộ sưu tập, trong khi thao tác thứ hai dừng ngay khi một phần tử được thỏa mãn. Đầu ra là:
Thử nghiệm với FlatMap
kiểm tra điều kiện đầu tiên với 1
kiểm tra điều kiện đầu tiên với 2
kiểm tra điều kiện đầu tiên với 3
nhìn trộm 3
kiểm tra điều kiện đầu tiên với 4
kiểm tra điều kiện đầu tiên với 5
kiểm tra điều kiện đầu tiên với 6
kiểm tra điều kiện đầu tiên với 7
kiểm tra điều kiện đầu tiên với 8
kiểm tra điều kiện đầu tiên với 9
kết quả1 = 3
Thử nghiệm với giảm
kiểm tra điều kiện đầu tiên với 1
kiểm tra điều kiện đầu tiên với 2
kiểm tra điều kiện đầu tiên với 3
nhìn trộm 3
kết quả2 = 3
Tại sao có sự khác biệt về hành vi giữa hai người? Có thể cải thiện mã JDK để hiệu quả trong trường hợp đầu tiên như trong trường hợp thứ hai hay có điều gì đó trong FlatMap khiến điều đó không thể thực hiện được?
Phụ lục: Giải pháp thay thế sau đây cũng hiệu quả như giải pháp sử dụng rút gọn, nhưng tôi vẫn không thể giải thích tại sao:
Kết quả số nguyên3 = Stream.of(vị ngữ1, vị ngữ2)
.flatMap(c -> list.stream().filter(c).limit(1))
.peek(i -> System.out.println("nhìn trộm " + i))
.findFirst()
.orElse(null);
System.out.println("result3 = " + result3);
Câu hỏi này đã có câu trả lời ở đây: Tại sao filter() sau FlatMap() lại "không hoàn toàn" lười biếng trong các luồng Java?
Tôi đang tạo một ứng dụng để thu thập dữ liệu từ Instagram. Tôi đang tìm kiếm một API phát trực tuyến như API phát trực tuyến Twitter để có thể tự động thu thập dữ liệu trong thời gian thực mà không cần gửi yêu cầu. Instagram có API tương tự
Tôi đang tải lên tệp .docx trong Google App Engine bằng cách sử dụng Apache Commons như được mô tả trong liên kết này servlet tải lên tệp. Khi tải lên, tôi cũng muốn sử dụng Apache.
Tôi đang cố gắng nắm bắt các thay đổi trong bảng DynamoDB bằng cách sử dụng Luồng DynamoDB và bộ điều hợp Java DynamoDB Streams Kinesis do AWS cung cấp. Tôi đang sử dụng các công cụ phát triển AWS Java trong ứng dụng Scala
Tôi hiện có video phát trực tuyến camera IP (RTSP) được mã hóa ở H.264. Tôi muốn sử dụng FFmpeg để chuyển đổi luồng được mã hóa H.264 này sang luồng RTSP khác nhưng được mã hóa MPEG-2. Tôi nên làm gì? tôi nên sử dụng cái nào
Redis Streaming có được hưởng lợi từ chế độ cụm không? Giả sử bạn có 10 luồng, chúng được phân phối trên cụm hay tất cả chúng đều nằm trên cùng một nút? Tôi dự định sử dụng Redis Streaming để đạt được thông lượng thực sự cao (2 triệu tin nhắn/giây), vì vậy tôi lo lắng về Redis ở quy mô này
Điều này đã làm phiền tôi một thời gian. Vì vậy, tôi có một lớp Sản phẩm có danh sách Hình ảnh (danh sách có thể trống). Tôi muốn làm sản phẩm.getImages().stream().filter(...) nhưng
Có thể sử dụng luồng Redis với bộ lưu trữ liên tục hoặc các luồng bị giới hạn ở dữ liệu trong bộ nhớ không? Tôi biết có thể sử dụng Redis với tính năng lưu trữ liên tục các cấu trúc dữ liệu cốt lõi, nhưng tôi có thể hiểu liệu có thể sử dụng tính năng lưu trữ liên tục các luồng trong Redis hay không. câu trả lời hay nhất
Tôi bắt đầu học Elixir và gặp phải một thử thách mà tôi không thể dễ dàng giải quyết được. Tôi đang cố gắng tạo một hàm nhận Enumerable.t và trả về một Enumerable.t khác chứa n mục tiếp theo. nó liên quan đến
Tôi đang cố gắng tạo luồng chuỗi vô hạn từ lệnh gọi readLine: import java.io.{BufferedReader, inputStreamReader} val in = new Buffere
Bạn có thể giúp tôi viết mã sau bằng API Java 8 Streams không? SuperUser superUser = db.getSuperUser; for (máy khách khách hàng cuối cùng: super
Tôi đang cố gắng bổ sung hướng dẫn định tuyến và biến máy khách thành máy chủ tên lửa. Tôi chỉ chấp nhận phản hồi và chuyển đổi gRPC thành một chuỗi. dịch vụ RouteGuide { rpc GetF
Mã luồng có thể được chạy ở đây. Bằng cách sử dụng luồng, tôi có một hàm lấy một đối tượng cặp khóa-giá trị và nhận giá trị của nó - giá trị mà nó nhận được phải là một chuỗi, số hoặc giá trị bool. gõ ValueType = chuỗi
Nếu tôi có một hàm trả về một đối tượng chứa thông tin cơ sở dữ liệu hoặc một đối tượng trống như thế này: getThingFromDB: async function(id:string):Promise{ const from
Tôi đang cố gắng đăng tệp âm thanh ogg lên luồng bằng cách sử dụng api javascript và FB.ui nhưng tôi không biết cách thực hiện. Đây là cuộc gọi của tôi tới FB.ui: FB.ui( { Method: '
Tôi đang cố gắng xóa không gian làm việc (hoặc sao chép nó để nó trông giống không gian làm việc gốc, nhưng dường như tôi cũng không thể làm được). Tuy nhiên, khi thử, tôi nhận được thông báo này: Không thể xóa không gian làm việc test_workspace vì nó có nhóm mặc định không trống. Theo tôi biết, điều này có nghĩa
Điều này có thể được thực hiện bằng cách sử dụng Stream|Map để tôi không cần đưa kết quả vào HashMap bên ngoài mà thay vào đó thu thập kết quả bằng cách sử dụng .collect(Collector.toMap(...)); không? Đại diện bản đồ
Chính xác thì điều gì xảy ra đằng sau hậu trường khi chúng tôi nhận được Luồng từ danh sách bộ sưu tập? Tôi thấy nhiều blog nói rằng Stream không lưu trữ bất kỳ dữ liệu nào. Nếu điều này đúng, hãy xem xét đoạn mã: List list = new ArrayList(); l
Tôi chưa quen với các luồng và cách chúng hoạt động, tôi đang cố gắng lấy số lần xuất hiện của một đối tượng cụ thể được thêm vào danh sách. Tôi đã tìm ra cách để thực hiện việc này bằng Collections. Quá trình này như sau: for (int i = 0; i p.content
Tôi muốn chuyển đổi danh sách bản đồ thành một danh sách bản đồ được nhóm khác. Vì vậy, tôi có danh sách bản đồ sau - Danh sách [{ "accId": "1", "accName":"TestAcc1", "accNumber
Tôi là một lập trình viên xuất sắc, rất giỏi!