java ConcurrentMap获取为空

java ConcurrentMap获取为空,java,guava,Java,Guava,我有这张地图 ConcurrentMap<String, Byte[]> companyLogo = new MapMaker() .concurrencyLevel(Runtime.getRuntime().availableProcessors()) .weakKeys() .initialCapacity(1000) .exp

我有这张地图

 ConcurrentMap<String, Byte[]> companyLogo = new MapMaker()
                   .concurrencyLevel(Runtime.getRuntime().availableProcessors())
                   .weakKeys()
                   .initialCapacity(1000)
                   .expiration(24, TimeUnit.HOURS)
                   .makeMap();

但是
companygo.get(“cpr48124”)为空。这怎么可能呢?

我不熟悉
MapMaker
是什么,但我猜
weakKeys
可能是你的问题


新条目的“弱点”很可能使其无法使用,因为没有其他引用。

尝试打印以下内容:ArrayUtils.toObject(resize(resize(request,((Byte[])request.getSession().getAttribute(COMPANY_LOGO_KEY+imageId)))我不熟悉
MapMaker
is,但是我想这可能是你的问题。你试过用另一个字节[]吗,我是说“ssssss”。getBytes()。。。或者类似的东西,只是为了测试一下?。这可能是您会话的问题attribute@bradimus我移除了weakKeys,它就工作了。请转换成answer@bradimus由于
“cpr48124”
是一个字符串文本,因此它将被插入,因此始终可以访问。我很惊讶
weakKeys()。
companyLogo.put("cpr48124", ArrayUtils.toObject(resize (request, ((Byte[])request.getSession().getAttribute(COMPANY_LOGO_KEY+ imageId)))));
companyLogo.get("cpr48124");