Một vài tuần trước, tôi đã tìm kiếm một cách để trích xuất một số giá trị cụ thể từ một tệp và tình cờ gặp phải số question giới thiệu tôi với đối tượng Stream
.Các luồng không song song có nghĩa là thực hiện một phép toán với khối lượng lớn dữ liệu không?
Bản năng đầu tiên của tôi là điều tra xem đối tượng này có hỗ trợ các thao tác tệp khác không, chẳng hạn như thay thế một vài trình giữ chỗ với các giá trị tương ứng mà tôi đã sử dụng BufferedReader
và FileWriter
. Tôi đã thất bại thảm hại trong việc sản xuất bất kỳ mã làm việc nào, nhưng kể từ đó tôi bắt đầu quan tâm đến các bài viết đã đề cập đến chủ đề này, vì vậy tôi có thể hiểu được mục đích sử dụng của Stream
.
Trên đường đi, tôi tình cờ gặp Optional
và đã hiểu rõ về điều đó và giờ đây có thể xác định các trường hợp tôi thấy thoải mái khi sử dụng Optional
trong khi vẫn duy trì mã của mình rõ ràng và dễ hiểu. Tuy nhiên, tôi không thể nói trường hợp này là Stream
, không đề cập đến nó may not have provided the performance gain I imagined it would bring và will still need a finally
clause in cases where IO is involved. Đây là vấn đề chính mà tôi đã cố gắng để quấn quanh đầu của tôi, hãy nhớ rằng tôi chủ yếu làm việc trên lập trình một sợi cho đến bây giờ: Khi nào thì nó thích sử dụng một Stream
ngoài việc xử lý song song không? Không.
Có phải hoạt động hàng loạt trên tập hợp con cụ thể của một tập hợp dữ liệu lớn, trong đó Collection
có thể được sử dụng khi truy cập và thao tác các đối tượng cụ thể của bộ sưu tập đó không? Mặc dù nó có vẻ là mục đích sử dụng, tôi vẫn không chắc chắn rằng ví dụ tôi đã liên kết ở đầu câu hỏi của tôi là trường hợp sử dụng điển hình của bạn.
Hoặc là nó chỉ là một cấu trúc được sử dụng để làm cho mã nhỏ hơn nhờ biểu hiện lambda tại sự hy sinh của khả năng đọc? (Không có gì chống lại lambda nếu được sử dụng đúng, nhưng hầu hết các ví dụ về sử dụng Stream
tôi thấy nơi khá không đọc được, mà không giúp cho sự hiểu biết chung của tôi)
Tôi có thể chỉ cho bạn một vài ví dụ tại nơi làm việc của chúng tôi, nơi chúng tôi đã xác định lại một số mã cho luồng-api so với các vòng đồng bằng, tức là * theo nghĩa đen * 10 lần ngắn hơn và IMO dễ đọc hơn. – Eugene