Я запускаю следующий код:
@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 говорит
Определяет, содержит ли кэш запись для указанного ключа.
Более формально, возвращает true тогда и только тогда, когда этот кэш содержит отображение для ключа k такого, что key.equals(k). (Таких отображений может быть не больше одного.)
Так почему же cache.containsKey возвращает false?
Спасибо