001package org.biopax.paxtools.util;
002
003import java.util.HashSet;
004
005
006/**
007 * This is a decorator set for capturing a set member that is equal to the given parameter. This is a workaround to
008 * avoid O(n) checks.
009 */
010public class AccessibleSet<E> extends HashSet<E>
011{
012        public E access(final E element)
013        {
014                E value = null;
015                if (element != null)
016                {
017                        final Object[] trap = new Object[]{null};
018                        if(this.contains(new Object()
019                        {
020                                public int hashCode()
021                                {
022                                        return element.hashCode();
023                                }
024
025                                public boolean equals(Object other)
026                                {
027                                        return other != null && element.equals(trap[0] = other);
028                                }
029                        }))
030                        {
031                                value= (E) trap[0];
032                        }
033                }
034                return value;
035        }
036}