java - 如何在 Java TreeMap 中设置最大大小?

标签 java treemap

我正在使用 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/

相关文章:

Java集合,使用treeset作为树形图的值

java - 如何使用java从文本文件中删除一行?

java - 由于存在或不存在 System.out.println() 语句,递增 int 变量的结果会有所不同

java - TreeMap 可以用来检索给定键值以上的所有键/值对吗?

php - 使用 PHP 实现 TreeMap 可视化?

Java:SortedMap、TreeMap、Comparable?如何使用?

java - 如何在android中获取准确的UTC时间戳

java - 为什么没有 IntStream.flatMapToObj()?

java - Spring Boot SSL已配置,服务器已启动但无法连接到端口

javascript - d3.nest() 键和值转换为名称和子项