package game.init; import java.util.IdentityHashMap; import java.util.Iterator; import java.util.List; import game.Predicates; import game.collect.Iterators; import game.collect.Lists; public class ObjectIntIdentityMap implements IObjectIntIterable { private final IdentityHashMap identityMap = new IdentityHashMap(512); private final List objectList = Lists.newArrayList(); public void put(T key, int value) { this.identityMap.put(key, value); while (this.objectList.size() <= value) { this.objectList.add(null); } this.objectList.set(value, key); } public int get(T key) { Integer integer = (Integer)this.identityMap.get(key); return integer == null ? -1 : integer.intValue(); } public final T getByValue(int value) { return (T)(value >= 0 && value < this.objectList.size() ? this.objectList.get(value) : null); } public Iterator iterator() { return Iterators.filter(this.objectList.iterator(), Predicates.notNull()); } }