aboutsummaryrefslogtreecommitdiff
path: root/main/java/gregtech/api/objects/GT_HashSet.java
diff options
context:
space:
mode:
authorBlood Asp <Blood@Asp>2015-04-23 18:14:22 +0200
committerBlood Asp <Blood@Asp>2015-04-23 18:14:22 +0200
commit7224ac4299098c70efae9dbd04c50a97e3f5f583 (patch)
treec739bb7d176a9735bc8e598063918023de32330c /main/java/gregtech/api/objects/GT_HashSet.java
downloadGT5-Unofficial-7224ac4299098c70efae9dbd04c50a97e3f5f583.tar.gz
GT5-Unofficial-7224ac4299098c70efae9dbd04c50a97e3f5f583.tar.bz2
GT5-Unofficial-7224ac4299098c70efae9dbd04c50a97e3f5f583.zip
Initial Commit
Diffstat (limited to 'main/java/gregtech/api/objects/GT_HashSet.java')
-rw-r--r--main/java/gregtech/api/objects/GT_HashSet.java81
1 files changed, 81 insertions, 0 deletions
diff --git a/main/java/gregtech/api/objects/GT_HashSet.java b/main/java/gregtech/api/objects/GT_HashSet.java
new file mode 100644
index 0000000000..5a88307639
--- /dev/null
+++ b/main/java/gregtech/api/objects/GT_HashSet.java
@@ -0,0 +1,81 @@
+package gregtech.api.objects;
+
+import gregtech.api.GregTech_API;
+import gregtech.api.util.GT_Utility;
+
+import java.util.*;
+
+import net.minecraft.item.ItemStack;
+
+public class GT_HashSet<E extends GT_ItemStack> extends AbstractSet<E> {
+ private transient HashMap<GT_ItemStack, Object> map;
+ private static final Object OBJECT = new Object();
+
+ public GT_HashSet() {
+ map = new HashMap<GT_ItemStack, Object>();
+ GregTech_API.sItemStackMappings.add(map);
+ }
+
+ public GT_HashSet(Collection<? extends E> c) {
+ map = new HashMap<GT_ItemStack, Object>(Math.max((int) (c.size()/.75f) + 1, 16));
+ addAll(c);
+ GregTech_API.sItemStackMappings.add(map);
+ }
+
+ public GT_HashSet(int initialCapacity, float loadFactor) {
+ map = new HashMap<GT_ItemStack, Object>(initialCapacity, loadFactor);
+ GregTech_API.sItemStackMappings.add(map);
+ }
+
+ public GT_HashSet(int initialCapacity) {
+ map = new HashMap<GT_ItemStack, Object>(initialCapacity);
+ GregTech_API.sItemStackMappings.add(map);
+ }
+
+ GT_HashSet(int initialCapacity, float loadFactor, boolean dummy) {
+ map = new LinkedHashMap<GT_ItemStack, Object>(initialCapacity, loadFactor);
+ GregTech_API.sItemStackMappings.add(map);
+ }
+
+ public HashMap getMap(){return map;}
+
+ @Override
+ public Iterator<E> iterator() {
+ return (Iterator<E>)map.keySet().iterator();
+ }
+
+ @Override
+ public int size() {
+ return map.size();
+ }
+
+ @Override
+ public boolean isEmpty() {
+ return map.isEmpty();
+ }
+
+ @Override
+ public boolean contains(Object o) {
+ return map.containsKey(o);
+ }
+
+ public boolean add(ItemStack aStack) {
+ if (GT_Utility.isStackInvalid(aStack)) return false;
+ return map.put(new GT_ItemStack(aStack), OBJECT)==null;
+ }
+
+ @Override
+ public boolean add(E e) {
+ return map.put(e, OBJECT)==null;
+ }
+
+ @Override
+ public boolean remove(Object o) {
+ return map.remove(o)==OBJECT;
+ }
+
+ @Override
+ public void clear() {
+ map.clear();
+ }
+} \ No newline at end of file