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}