Nếu tôi có số Stream<T>
, tôi có thể dễ dàng sử dụng skip(long)
để bỏ qua một vài thành phần đầu tiên của luồng. Tuy nhiên, dường như không có tương đương với việc bỏ qua một số phần tử đã cho ở cuối luồng.Bỏ qua phần tử x cuối cùng trong Dòng <T>
Giải pháp rõ ràng nhất là sử dụng limit(originalLength - elementsToRemoveAtEnd)
, nhưng điều đó đòi hỏi phải biết trước về độ dài ban đầu, không phải lúc nào cũng như vậy.
Có cách nào để xóa vài phần tử cuối cùng của luồng có độ dài không xác định mà không phải thu thập nó vào một số Collection
, đếm các phần tử và phát lại nó không?
Lý do không có phương pháp nào có thể là phương pháp bạn đang đưa ra. Thường thì không có cách nào để biết khi nào một 'Stream' sẽ kết thúc trong quá trình phát trực tuyến, vì vậy bạn không thể thực sự loại bỏ các phần tử cuối cùng cho đến khi bạn hoàn thành. – Keppil
Làm thế nào để bạn xác định điểm khi bạn muốn bỏ qua các yếu tố còn lại? Bạn không thể triển khai Luồng của riêng mình để bao quanh Luồng gốc? – user
Làm thế nào để bạn biết một yếu tố là cuối cùng nếu bạn không biết độ dài của dòng? – assylias