Nix*_*Nix 1 java hashmap pruning
我正在用Java创建一个Flyweight,我想确保我不会创建太大的地图.是否有更有效的方法来修剪地图?我没有看到任何可以自动执行此操作的属性(如max size构造函数),所以我在代码中执行此操作.
这是我拥有的,非常基本的,但我想确保没有更好的方法:
private static void prune() {
Iterator<Entry<Integer, Integer[]>> iterator = seeds.entrySet().iterator();
int removed = 0;
while(iterator.hasNext()|| removed == pruneLength) {
iterator.next();
iterator.remove();
removed++;
}
}
Run Code Online (Sandbox Code Playgroud)
LinkedHashMap可以用作LRU缓存.
Map<Integer, Integer[]> map = createLRUMap(128);
public static <K, V> Map<K, V> createLRUMap(final int maxSize) {
return new LinkedHashMap<K,V>(maxSize, 1, true) {
@Override
protected boolean removeEldestEntry(Map.Entry<K,V> eldest) {
return size() > maxSize;
}
};
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1614 次 |
| 最近记录: |