Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何使LruCache仅接受密钥?_Android_Android Lru Cache - Fatal编程技术网

Android 如何使LruCache仅接受密钥?

Android 如何使LruCache仅接受密钥?,android,android-lru-cache,Android,Android Lru Cache,LruCache是一个映射,但我想使用LruCache仅缓存字符串,即我希望LruCache用作哈希集 我应该如何定义LruCache类 LruCache不起作用,因为当我的代码调用LruCache.put(“abc”,null)时,抛出了NullPointerException 谢谢。非常清楚: 此类不允许将null用作键或值。从get(K)、put(K,V)或remove(K)返回null值是明确的:键不在缓存中 您可以定义自己的字符串包装器类以用于值。您可以使用它的一个特殊实例来表示空字符

LruCache
是一个映射,但我想使用
LruCache
仅缓存字符串,即我希望LruCache用作哈希集

我应该如何定义
LruCache

LruCache
不起作用,因为当我的代码调用
LruCache.put(“abc”,null)
时,抛出了
NullPointerException

谢谢。

非常清楚:

此类不允许将null用作键或值。从
get(K)
put(K,V)
remove(K)
返回null值是明确的:键不在缓存中

您可以定义自己的字符串包装器类以用于值。您可以使用它的一个特殊实例来表示空字符串

public class StringValue {
    public final String string;
    public StringValue(String s) {
        string = s;
    }
    public String toString() {
        return String.valueOf(string); // in case it's null
    }
    public String asString() {
        return string;
    }
    public static final StringValue NULL = new StringValue(null);
}
然后您可以存储一个非空值:

LruCache<String, StringValue> lruCache = new LruCache<String, StringValue>();
lruCache.put("abc", StringValue.NULL);
lruCache.put("def", new StringValue("something"));
LruCache LruCache=new LruCache();
lruCache.put(“abc”,StringValue.NULL);
lruCache.put(“def”,新字符串值(“某物”);

不存储
null
。存储其他内容,例如
字符串
。确定。我想我必须定义LruCache,并将字符串同时作为键和值,例如LruCache.put(stringToCache,stringToCache)。