Tôi quan tâm nếu có bất kỳ khuôn khổ nào triển khai bộ sưu tập có hành vi sau.Bộ sưu tập Java để cho phép thêm và xóa trong khi đang lặp lại
Giả sử nó ban đầu bao gồm: [1, 2, 3]
- Tôi lặp nó (sử dụng một iterator) và đạt được yếu tố 2, bây giờ tôi thêm 4 đến cùng (bộ sưu tập sẽ bây giờ là [1, 2, 3, 4]).
- bây giờ tôi tạo ra một iterator mới và lặp bộ sưu tập, kết quả trong [1, 2, 3, 4]
- tôi tiếp tục lặp lại với iterator đầu tiên và nó sẽ cho tôi chỉ 3 và trở
- nay đặt lại trình lặp đầu tiên sẽ cho tôi [1, 2, 3, 4] (tương tự như tạo một cái mới).
Tương tự nên áp dụng cho việc xóa phần tử. Nếu tôi xóa 3 thay vì thêm, trình lặp thứ hai sẽ cho tôi [1, 2] trong khi người thứ nhất sẽ vẫn cho tôi 3 và kết thúc.
Vì vậy, khi tôi nhận được và iterator Tôi muốn nó cho tôi bộ sưu tập tôi đã có khi tôi tạo ra các iterator (ngay cả khi tôi lặp nó sau, ngày tôi lặp một chút và tiếp tục sau), khi tôi thiết lập lại iterator, nó sẽ thu thập rác, nó sẽ cập nhật lên phiên bản mới nhất và tôi có thể có nhiều phiên bản lặp được tạo vào các thời điểm khác nhau sẽ cung cấp các phiên bản khác nhau tùy thuộc vào nội dung của mảng khi trình vòng lặp được tạo.
Tôi cần nó hoạt động tốt với nhiều luồng và thích hợp hơn để triển khai hiệu quả.
Có ai biết về việc triển khai bộ sưu tập đó hay không hoặc tôi có phải tự mình triển khai không?
Tạo bản sao mới của bộ sưu tập về thay đổi (nội bộ)? Hay nó được thực hiện một cách hiệu quả hơn? – Razvi
Có như mô tả trong javadoc: "tất cả các hoạt động đột biến (thêm, thiết lập, vv) được thực hiện bằng cách tạo một bản sao mới của mảng cơ bản." – assylias
Hành vi này trông giống như những gì tôi cần. Nhưng bộ sưu tập sẽ có khá nhiều vật phẩm trong đó. Iterator được tạo ra thường xuyên trên nó, nhưng tôi tin rằng những thay đổi là hiếm hơn (vì vậy các bản sao trên thay đổi có thể không phải chịu quá nhiều tổn thất về hiệu năng). – Razvi