From 10e83baceb55fcd4e0a78eb2e48fe12148f5b50d Mon Sep 17 00:00:00 2001 From: Nikita Date: Wed, 22 Jul 2015 10:00:03 +0300 Subject: [PATCH] RedissonMap equals, hashcode methods implemented --- src/main/java/org/redisson/RedissonMap.java | 42 +++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/src/main/java/org/redisson/RedissonMap.java b/src/main/java/org/redisson/RedissonMap.java index f09f36966..ca98803af 100644 --- a/src/main/java/org/redisson/RedissonMap.java +++ b/src/main/java/org/redisson/RedissonMap.java @@ -375,5 +375,47 @@ public class RedissonMap extends RedissonExpirable implements RMap { getName(), key, new BigDecimal(value.toString()).toPlainString()); } + @Override + public boolean equals(Object o) { + if (o == this) + return true; + + if (!(o instanceof Map)) + return false; + Map m = (Map) o; + if (m.size() != size()) + return false; + + try { + Iterator> i = entrySet().iterator(); + while (i.hasNext()) { + Entry e = i.next(); + K key = e.getKey(); + V value = e.getValue(); + if (value == null) { + if (!(m.get(key)==null && m.containsKey(key))) + return false; + } else { + if (!value.equals(m.get(key))) + return false; + } + } + } catch (ClassCastException unused) { + return false; + } catch (NullPointerException unused) { + return false; + } + + return true; + } + + @Override + public int hashCode() { + int h = 0; + Iterator> i = entrySet().iterator(); + while (i.hasNext()) + h += i.next().hashCode(); + return h; + } }