diff options
| author | Dream-Master <dream-master@gmx.net> | 2016-06-21 18:50:29 +0200 |
|---|---|---|
| committer | Dream-Master <dream-master@gmx.net> | 2016-06-21 18:50:29 +0200 |
| commit | 09add3e8ac3be54b1e6c068e87d4fb5143c6d785 (patch) | |
| tree | 7b02b400788333f9ebf82081736c9c55f8ed48e8 /src/main/java/gregtech/api/objects/GT_HashSet.java | |
| parent | b09b54435f9427332854558c42bd2c902825cbfe (diff) | |
| download | GT5-Unofficial-09add3e8ac3be54b1e6c068e87d4fb5143c6d785.tar.gz GT5-Unofficial-09add3e8ac3be54b1e6c068e87d4fb5143c6d785.tar.bz2 GT5-Unofficial-09add3e8ac3be54b1e6c068e87d4fb5143c6d785.zip | |
even with Blood asp experimental branch
Diffstat (limited to 'src/main/java/gregtech/api/objects/GT_HashSet.java')
| -rw-r--r-- | src/main/java/gregtech/api/objects/GT_HashSet.java | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/src/main/java/gregtech/api/objects/GT_HashSet.java b/src/main/java/gregtech/api/objects/GT_HashSet.java new file mode 100644 index 0000000000..cec006905b --- /dev/null +++ b/src/main/java/gregtech/api/objects/GT_HashSet.java @@ -0,0 +1,82 @@ +package gregtech.api.objects; + +import gregtech.api.GregTech_API; +import gregtech.api.util.GT_Utility; +import net.minecraft.item.ItemStack; + +import java.util.*; + +public class GT_HashSet<E extends GT_ItemStack> extends AbstractSet<E> { + private static final Object OBJECT = new Object(); + private transient HashMap<GT_ItemStack, Object> map; + + 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 |
