2010-09-02 19 views
12

Giống như tiêu đề cho biết, tôi muốn có HashSet an toàn chỉ bằng Bộ sưu tập ổi.HashSet an toàn theo chủ đề với Bộ sưu tập tiếng tăm

Bạn có thể giúp tôi không?

Cảm ơn!

+0

Bạn có đặt là không thay đổi không? – louisgab

+4

Sẽ không có ý nghĩa gì trong việc đưa vào luồng an toàn khi nó đã không thay đổi, phải không? – whiskeysierra

+0

Bạn là Willi righy. Nó sẽ không bất biến. Một số chủ đề sẽ biến đổi đồng thời. – santiagobasulto

Trả lời

6

Đây sẽ là câu trả lời đúng, Sử dụng lớp Bộ từ ổi. Dù sao câu trả lời từ @crhis đã được dự định tốt.

Sets.newSetFromMap(new ConcurrentHashMap<V, Boolean>()); 
23
Set<K> set = Collections.newSetFromMap(new ConcurrentHashMap<K, Boolean>()); 
+0

Xin cảm ơn, tôi sẽ dùng thử. – santiagobasulto

+1

Btw, tất cả các điểm của bạn thuộc về tôi khi tôi trả lời câu hỏi này trên danh sách gửi thư ổi, 8 phút trước khi nó được đăng ở đây;) – whiskeysierra

+0

@Willi: Nếu tôi có thể gán chúng cho bạn, tôi sẽ, bởi vì tôi đã nhấn mũ đại diện của tôi trong ngày, vì vậy tôi hoàn toàn không có đại diện cho câu trả lời này. :-P –

4

Google Collections một phương pháp nhà máy tên Sets.newConcurrentHashSet() một thời gian.

thực hiện của nó cũng tương tự như đề nghị của Chris:

public static <E> Set<E> newConcurrentHashSet() { 
    return newSetFromMap(new ConcurrentHashMap<E, Boolean>()); 
} 

Họ đã có một newSetFromMap() phương pháp bên trong com.google.common.collect.Sets lớp (được viết bởi Doug Lea với sự hỗ trợ từ thành viên của JCP JSR-166). Phương thức đó đã được thêm vào java.util.Collections trong java 1.6.

Nó đã bị rút trong Google Bộ sưu tập 1.0rc1, vì có kế hoạch hỗ trợ tốt hơn các bộ đồng thời trong ổi (xem thêm thông tin here).

This post mở rộng việc sử dụng phương thức "newSetFromMap" để tạo các tập hợp đồng thời.

Các vấn đề liên quan