diff options
author | botn365 <42187820+botn365@users.noreply.github.com> | 2019-12-30 03:55:42 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-12-30 03:55:42 +0100 |
commit | fa1a1f4a6cd8dee8011a8f04fa6afbcc71d8db89 (patch) | |
tree | b9f75736d90eb228de26ad8dcf9956bd1e6bd7e8 /src/Java/gtPlusPlus/api/objects/data/ConcurrentSet.java | |
parent | a731e939c6b9a70ac9fd444dbf06243f63f29c06 (diff) | |
parent | d2ab710218628d51cd2ede566d50492238d797cf (diff) | |
download | GT5-Unofficial-fa1a1f4a6cd8dee8011a8f04fa6afbcc71d8db89.tar.gz GT5-Unofficial-fa1a1f4a6cd8dee8011a8f04fa6afbcc71d8db89.tar.bz2 GT5-Unofficial-fa1a1f4a6cd8dee8011a8f04fa6afbcc71d8db89.zip |
Merge pull request #5 from alkcorp/master
sync fork
Diffstat (limited to 'src/Java/gtPlusPlus/api/objects/data/ConcurrentSet.java')
-rw-r--r-- | src/Java/gtPlusPlus/api/objects/data/ConcurrentSet.java | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/src/Java/gtPlusPlus/api/objects/data/ConcurrentSet.java b/src/Java/gtPlusPlus/api/objects/data/ConcurrentSet.java new file mode 100644 index 0000000000..1d3ffc1c01 --- /dev/null +++ b/src/Java/gtPlusPlus/api/objects/data/ConcurrentSet.java @@ -0,0 +1,53 @@ +package gtPlusPlus.api.objects.data; + +import java.io.Serializable; +import java.util.AbstractSet; +import java.util.Iterator; +import java.util.concurrent.ConcurrentMap; + +public abstract class ConcurrentSet<E> extends AbstractSet<E> implements Serializable { + + private static final long serialVersionUID = -6761513279741915432L; + + private final ConcurrentMap<Integer, E> mInternalMap; + + private int mInternalID = 0; + + /** + * Creates a new instance which wraps the specified {@code map}. + */ + public ConcurrentSet(ConcurrentMap<Integer, E> aMap) { + mInternalMap = aMap; + } + + @Override + public int size() { + return mInternalMap.size(); + } + + @Override + public boolean contains(Object o) { + return mInternalMap.containsKey(o); + } + + @Override + public boolean add(E o) { + return mInternalMap.putIfAbsent(mInternalID++, o) == null; + } + + @Override + public boolean remove(Object o) { + return mInternalMap.remove(o) != null; + } + + @Override + public void clear() { + this.mInternalID = 0; + mInternalMap.clear(); + } + + @Override + public Iterator<E> iterator() { + return mInternalMap.values().iterator(); + } +} |