我正在使用 Java 中的 TreeMap 构建最近最少使用的缓存。我选择 TreeMap 的原因是因为 TreeMap.floorEntry (String) 方法。 我希望能够指定缓存(TreeMap)的最大大小。 然后我想使用 LRU 驱逐机制,因此, 当缓存达到最大大小并且有新记录要缓存时, 我希望缓存添加新记录,并删除最旧的条目。
最佳答案
我希望我正确理解了你的问题。 我将使用 ConcurrentSkipListMap(它也有 FloorEntry 方法)并实现我自己的小最大尺寸控制。
这就是我要做的:
int maxSize = 100;
ConcurrentSkipListMap<String, String> cache = new ConcurrentSkipListMap<>();
// Check if max size is reached before inserting something in it. Make some room for new entry.
while (cache.size() >= maxSize) {
cache.pollFirstEntry();
}
这有点hackish,但应该可以完成工作。
关于java - 如何在 Java TreeMap 中设置最大大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37350548/