首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在LinkedHashMap上使用put方法的NullpointerException

在LinkedHashMap上使用put方法的NullpointerException
EN

Stack Overflow用户
提问于 2011-06-18 00:49:07
回答 1查看 1.3K关注 0票数 1

我使用LinkedHashMap作为缓存。我重写了removeEldestEntry,以便强制这个缓存具有固定的大小。较旧的值将被删除。我的地图是这样初始化的:

代码语言:javascript
复制
<!-- language: lang-java -->
    sBackgroundBitmapCache = new LinkedHashMap<String, Bitmap>(backgroundCacheSize) {
        private static final long serialVersionUID = 287204858147490218L;

        @Override
        protected boolean removeEldestEntry(LinkedHashMap.Entry<String, Bitmap> eldest) {
            if (size() > backgroundCacheSize) {
                Log.d(TAG, "Removing hash " + eldest.getKey() + " from background cache");
                return true;
            } else {
                return false;
            }
        }
    };

所以很明显,我将使用使用put方法缓存。但是当我使用put方法时,我得到了崩溃报告:

代码语言:javascript
复制
java.lang.NullPointerException
at java.util.LinkedHashMap.postRemove(LinkedHashMap.java:291)
at java.util.HashMap.remove(HashMap.java:637)
at java.util.LinkedHashMap.addNewEntry(LinkedHashMap.java:186)
at java.util.HashMap.put(HashMap.java:411)

我还不能找出为什么使用put方法可能会导致空指针异常。我百分之百确定,key和value不是空值。

任何帮助都将不胜感激。

-f4

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-02 03:28:51

正如Mike所说,这个问题可能与试图从多个线程使用缓存有关。我也遇到了同样的问题,通过确保所有的put()都发生在UI线程中,我似乎已经解决了这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6389062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档