我有一个程序,从数据库返回的是
接下来我尝试的方法是使用
将
注意:该映射存储在内存中,仅在单个应用程序运行期间存在。如果这种方法可行,我写了一个简单的包装类来使我的生活更轻松。
byte[]
类型的id。我想将这些id(字节数组)用作映射的键。默认情况下,这不起作用,因为比较的是“对象相等性”,而不是“内容相等性”。接下来我尝试的方法是使用
new String(byte[])
构造函数实例化一个字符串。虽然这似乎可以工作,但我知道我正在做一些潜在的危险事情。我没有指定编码,这依赖于系统默认值。我也不知道所有的字节序列是否都有在每种编码中的表示。将
byte[]
转换为String
以进行map.put()
和map.get()
操作是安全的吗?我是否考虑到了可能会意外创建冲突的边缘情况(其中具有不同内容的两个不同的byte[]
可能成为相同的String
)。注意:该映射存储在内存中,仅在单个应用程序运行期间存在。如果这种方法可行,我写了一个简单的包装类来使我的生活更轻松。
public class Cache {
Map<String, Set<String>> cache = new HashMap<String, Set<String>>();
public Cache() {}
public void put(byte[] key, Set<String> value) {
cache.put(new String(key), value);
}
public Set<String> get(byte[] key) {
return cache.get(new String(key));
}
}