package org.jbox2d.pooling.arrays;
import java.util.HashMap;
public abstract class DynamicTLArray<I> {
private static class TLHashMap<K, V> extends ThreadLocal<HashMap<K, V>>{
protected HashMap<K, V> initialValue(){
return new HashMap<K, V>();
}
}
private final TLHashMap<Integer, I[]> tlMap = new TLHashMap<Integer, I[]>();
public I[] get( int argLength){
assert(argLength > 0);
HashMap<Integer, I[]> map = tlMap.get();
if(!map.containsKey(argLength)){
map.put(argLength, getInitializedArray(argLength));
}
assert(map.get(argLength).length == argLength) : "Array not built of correct length";
return map.get(argLength);
}
public void recycle( I[] argArray){
}
protected abstract I[] getInitializedArray(int argLength);
}
|