2009-06-22 25 views
9

Một vài câu hỏi liên quan đến WeakReference Java và Bộ sưu tập:tìm đối tượng tham khảo yếu trong bộ sưu tập trong java

  1. Có một thư viện ra có mà thực hiện dữ liệu thiết lập các giao diện khác nhau của Java (ví dụ Collection, List, Set, Hàng đợi, vv) với WeakReference minh bạch? Giống như WeakHashMap là dành cho giao diện HashMap? Hoặc là giải pháp phổ biến để tạo các Bộ sưu tập thông thường và sau đó sử dụng một số loại lừa với compareTo hoặc một Comparator hoặc một thứ gì đó để làm cho việc tìm kiếm bộ sưu tập hoạt động chính xác không? Có phải không?

tôi về cơ bản sẽ như thế này:

public interface WeakCollection<E> extends Collection<E> {} 

Nhưng hợp đồng cho giao diện là các tài liệu tham khảo để E được lưu trữ một cách yếu ớt. Rõ ràng tôi không có vấn đề với get(int index) trả về null khi đối tượng đó đã biến mất vv, nhưng tôi muốn chức năng contains(E e) và các mục khác như nó hoạt động bình thường.

Tôi chỉ đang cố gắng tránh bẫy "không được phát minh ở đây" và đảm bảo rằng nếu tôi tự mình triển khai thực hiện giải pháp đơn giản nhất có thể.

+0

Bộ sưu tập của Google có lẽ? Trình xây dựng bản đồ của họ khá tốt Tôi nghe – akarnokd

+0

Một mẹo nhỏ gọn (chỉ thỉnh thoảng có thể áp dụng) là bao gồm một WeakReference chuẩn trong chính đối tượng tham chiếu - chỉ cần tạo một tham chiếu cho mỗi mục tiêu và bằng/== công việc. –

Trả lời

6

JBoss có WeakSet. Trong Java 6, you can also do

Set<T> s = Collections.newSetFromMap(new WeakHashMap<T, Boolean>()); 

Ngoài ra tôi tìm thấy một WeakArrayList đó là LGPL nếu giúp.

+1

Oh tốt đẹp mà lừa với Bộ sưu tập là mát mẻ, chắc chắn hữu ích. – Petriborg

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