Ignite cache.containsKey返回false,尽管键相等

Ignite cache.containsKey返回false,尽管键相等,ignite,Ignite,我运行以下代码: @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

我运行以下代码:

@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));
}
JSR107规范说

确定缓存是否包含指定密钥的项

更正式地说,当且仅当此缓存包含键k的映射(如key.equals(k))时,返回true。(最多可以有一个这样的映射。)

那么为什么cache.containsKey返回false呢


谢谢

您提供的代码看起来有误。不应将哈希映射用作缓存键

试试这个:

@Test
public void test() {
    IgniteCache<Object, Object> cache = ignite.getOrCreateCache("cache");

    cache.put("ID", "1");

    System.out.println("cache.get(ID)=" + cache.get("ID"));
}
@测试
公开无效测试(){
IgniteCache cache=ignite.getOrCreateCache(“缓存”);
cache.put(“ID”,“1”);
System.out.println(“cache.get(ID)=”+cache.get(“ID”);
}

您提供的代码看起来有误。不应将哈希映射用作缓存键

试试这个:

@Test
public void test() {
    IgniteCache<Object, Object> cache = ignite.getOrCreateCache("cache");

    cache.put("ID", "1");

    System.out.println("cache.get(ID)=" + cache.get("ID"));
}
@测试
公开无效测试(){
IgniteCache cache=ignite.getOrCreateCache(“缓存”);
cache.put(“ID”,“1”);
System.out.println(“cache.get(ID)=”+cache.get(“ID”);
}