【发布时间】:2010-12-06 16:28:45
【问题描述】:
我正在用 Java 创建享元,我想确保我不会创建太大的地图。有没有更有效的方法来修剪地图?我没有看到任何可以自动执行此操作的属性(例如最大大小的构造函数),所以我在代码中执行此操作。
这是我所拥有的,它非常基本,但我想确保没有更好的方法:
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++;
}
}
【问题讨论】:
-
您的意思是要避免使用具有广泛键的地图还是?
-
为什么不使用
iterator.remove()?它反映在地图上。 -
我想限制这张地图随时间的增长。我不应该经常达到这个限制......
-
在迭代时不要使用
Iterator并删除(或添加)活动列表中的元素 - 这会导致迭代器出现未指定的行为。请改用iterator.remove()方法。 (参见download.oracle.com/javase/6/docs/api/java/util/Map.html)) -
对我来说看起来不太安全...