Java có rất nhiều Bộ sưu tập khác nhau được thiết kế cho sự an toàn và an toàn luồng, và tôi thua lỗ để chọn lựa cho tình huống của mình.Danh sách hiệu quả nhất nhưng an toàn cho chủ đề/Bộ
Nhiều chủ đề có thể gọi .add()
và .remove()
và tôi sẽ sao chép danh sách này thường xuyên với một cái gì đó như List<T> newList = new ArrayList<T>(concurrentList)
. Tôi sẽ không bao giờ lặp lại danh sách đồng thời.
Tôi nghĩ về một cái gì đó như CopyOnWriteArrayList
, nhưng tôi đã đọc rằng nó có thể rất kém hiệu quả vì bản thân nó tự sao chép mỗi khi nó được sửa đổi. Tôi hy vọng sẽ tìm thấy một sự thỏa hiệp tốt giữa an toàn và hiệu quả.
Danh sách hay (hoặc thiết lập) tốt nhất cho tình huống này là gì?
Bạn có chắc là mình cần danh sách không? Bản đồ hoặc tập hợp có đáp ứng nhu cầu của bạn hay không. Việc truy cập đồng thời vào Bản đồ hoặc Tập hợp dễ dàng hơn nhiều so với danh sách. – bhspencer
@bhspencer Có, tôi nghĩ một bộ có thể hoạt động. – RogueCSDev
Nếu bạn thường chỉ thêm và xóa các phần tử ở cuối và bạn sao chép danh sách thường là cấu trúc dữ liệu hiệu quả nhất sẽ là danh sách liên kết đơn lẻ bất biến mà java không may không tích hợp nhưng đó là cấu trúc dữ liệu rất đơn giản để bạn có thể nhanh chóng tự mình thực hiện nó. – SpiderPig