initial commit
This commit is contained in:
parent
3c9ee26b06
commit
22186c33b9
1458 changed files with 282792 additions and 0 deletions
43
java/src/game/init/ObjectIntIdentityMap.java
Executable file
43
java/src/game/init/ObjectIntIdentityMap.java
Executable file
|
@ -0,0 +1,43 @@
|
|||
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<T> implements IObjectIntIterable<T>
|
||||
{
|
||||
private final IdentityHashMap<T, Integer> identityMap = new IdentityHashMap(512);
|
||||
private final List<T> objectList = Lists.<T>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<T> iterator()
|
||||
{
|
||||
return Iterators.filter(this.objectList.iterator(), Predicates.notNull());
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue