WeakReferenceSet.java

 1package eu.siacs.conversations.utils;
 2
 3import java.lang.ref.WeakReference;
 4import java.util.HashSet;
 5import java.util.Iterator;
 6
 7public class WeakReferenceSet<T> extends HashSet<WeakReference<T>> {
 8
 9	public void removeWeakReferenceTo(T reference) {
10		for (Iterator<WeakReference<T>> iterator = iterator(); iterator.hasNext(); ) {
11			if (reference == iterator.next().get()) {
12				iterator.remove();
13			}
14		}
15	}
16
17
18	public void addWeakReferenceTo(T reference) {
19		for (WeakReference<T> weakReference : this) {
20			if (reference == weakReference.get()) {
21				return;
22			}
23		}
24		this.add(new WeakReference<>(reference));
25	}
26}