我运行以下代码:
@Test
public void containsTest() {
IgniteCache<Object, Object> cache = ignite.getOrCreateCache("cache");
Map<String, Integer> key1 = new HashMap<>();
key1.put("ID", 1);
Map<String, Integer> key2 = new LinkedHashMap<>();
key2.put("ID", 1);
System.out.println("key1.equals(key2)=" + key1.equals(key2));
cache.put(key1, "key 1 value");
System.out.println("cache.containsKey(key1)=" + cache.containsKey(key1));
System.out.println("cache.containsKey(key2)=" + cache.containsKey(key2));
}
我得到以下输出:
key1.equals(key2)=true
cache.containsKey(key1)=true
cache.containsKey(key2)=false
JSR107规范说
确定Cache是否包含指定键的条目。
更正式地说,当且仅当此缓存包含key_quals(k)的键k的映射时才返回true。 (最多可以有一个这样的映射。)
那么为什么cache.containsKey会返回false?
由于
答案 0 :(得分:0)
您提供的代码看起来不对。您不应该将hashmap用作缓存键。
试试这个:
@Test
public void test() {
IgniteCache<Object, Object> cache = ignite.getOrCreateCache("cache");
cache.put("ID", "1");
System.out.println("cache.get(ID)=" + cache.get("ID"));
}