java - 有限大小的 HashMap

标签 java

我想制作一个像缓存一样使用的 HashMap 。 缓存有一个初始大小,如果您在缓存已满时尝试插入一个项目,那么最近使用的项目应该被替换……有什么想法吗?

最佳答案

您可以通过实现 removeEldest 来使用 LinkedHashMap

public static <K,V> Map<K,V> lruCache(final int maxSize) {
    return new LinkedHashMap<K,V>(maxSize*4/3, 0.75f, true) {
        @Override
        protected boolean removeEldestEntry(Map.Entry<K,V> eldest) {
            return size() > maxSize;
        }
    };
}

更多详情

http://vanillajava.blogspot.co.uk/2011/06/java-secret-lru-cache-in-java.html

http://blog.meschberger.ch/2008/10/linkedhashmaps-hidden-features.html

关于java - 有限大小的 HashMap ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12319741/

相关文章:

java - JAXB 解码错误

java - 在Android中从/向文件读取/写入字符串

java - ReSTLet 将 JSON 发布到 Appengine 错误

java - servlet 上的全局变量。对所有 session 是全局的,还是仅对当前 session ?

java - 打印文本文件中的最后几行

java - 在 Nimbus 中,当鼠标悬停时如何绘制 TextField?

java - 找不到符号:方法prepareStatement(String)位置:类型连接

java - 使用 mongodb 查找,同时使用 java 中的吗啡迭代列表

java - @ViewScope 和 @PostConstruct 的问题

java - Java 中具有自动索引的集合