From d9a6f27bc333587fad88b3bc1f53b370a016ccd0 Mon Sep 17 00:00:00 2001 From: Jisi Liu Date: Fri, 6 Feb 2015 15:55:04 -0800 Subject: implement hashCode() for JavaNano maps. --- .../java/com/google/protobuf/nano/InternalNano.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'javanano/src/main/java') diff --git a/javanano/src/main/java/com/google/protobuf/nano/InternalNano.java b/javanano/src/main/java/com/google/protobuf/nano/InternalNano.java index 044c30dd..f3144652 100644 --- a/javanano/src/main/java/com/google/protobuf/nano/InternalNano.java +++ b/javanano/src/main/java/com/google/protobuf/nano/InternalNano.java @@ -531,4 +531,23 @@ public final class InternalNano { } return a.equals(b); } + + public static int hashCode(Map map) { + if (map == null) { + return 0; + } + int result = 0; + for (Entry entry : map.entrySet()) { + result += hashCodeForMap(entry.getKey()) + ^ hashCodeForMap(entry.getValue()); + } + return result; + } + + private static int hashCodeForMap(Object o) { + if (o instanceof byte[]) { + return Arrays.hashCode((byte[]) o); + } + return o.hashCode(); + } } -- cgit v1.2.3