X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Futil%2FLinkedIdentityHashSet.java;h=bce540fee65364fff058eaf5fd039d506f907ace;hb=b71ca98d05f8848fa3170d606b7b8a8ef6d274f4;hp=5cdbeb10b8364eeb8b9d0f26047748ffb0a128f3;hpb=86f6122c4537264ac1a6203aaf589f08d725e648;p=jalview.git diff --git a/src/jalview/util/LinkedIdentityHashSet.java b/src/jalview/util/LinkedIdentityHashSet.java index 5cdbeb1..bce540f 100644 --- a/src/jalview/util/LinkedIdentityHashSet.java +++ b/src/jalview/util/LinkedIdentityHashSet.java @@ -65,7 +65,34 @@ public class LinkedIdentityHashSet extends AbstractSet public boolean add(E e) { IdentityWrapper el = (new IdentityWrapper(e, set.size())); - return set.putIfAbsent(el, el) == null; + // Map.putIfAbsent() from Java 8 + // return set.putIfAbsent(el, el) == null; + return putIfAbsent(el, el) == null; + } + + /** + * If the specified key is not already associated with a value (or is mapped + * to null) associates it with the given value and returns null, else returns + * the current value. + * + * Method added for Java 7 (can remove for Java 8) + * + * @param key + * @param value + * @return + * @see https + * ://docs.oracle.com/javase/8/docs/api/java/util/Map.html#putIfAbsent + * -K-V- + */ + private IdentityWrapper putIfAbsent(IdentityWrapper key, + IdentityWrapper value) + { + IdentityWrapper v = set.get(key); + if (v == null) + { + v = set.put(key, value); + } + return v; } @Override @@ -87,6 +114,13 @@ public class LinkedIdentityHashSet extends AbstractSet { return (E) se.next().obj; } + + @Override + public void remove() + { + // Java 8 default behaviour + throw new UnsupportedOperationException(); + } }; }