X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Futil%2FLinkedIdentityHashSet.java;h=7f109ecf2b872e87ff73e42475a5c825f6eeedc6;hb=8fa69554edf6aeb278b4a4afd8e2b60264fdccd8;hp=5cdbeb10b8364eeb8b9d0f26047748ffb0a128f3;hpb=86f6122c4537264ac1a6203aaf589f08d725e648;p=jalview.git diff --git a/src/jalview/util/LinkedIdentityHashSet.java b/src/jalview/util/LinkedIdentityHashSet.java index 5cdbeb1..7f109ec 100644 --- a/src/jalview/util/LinkedIdentityHashSet.java +++ b/src/jalview/util/LinkedIdentityHashSet.java @@ -34,7 +34,7 @@ import java.util.LinkedHashMap; */ public class LinkedIdentityHashSet extends AbstractSet { - LinkedHashMap set = new LinkedHashMap(); + LinkedHashMap set = new LinkedHashMap<>(); static class IdentityWrapper { @@ -51,7 +51,7 @@ public class LinkedIdentityHashSet extends AbstractSet @Override public boolean equals(Object obj) { - return this.obj == obj; + return this.obj == ((IdentityWrapper) obj).obj; } @Override @@ -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(); + } }; }