aboutsummaryrefslogtreecommitdiffhomepage
path: root/javanano/src/main
diff options
context:
space:
mode:
authorGravatar Jisi Liu <jisi.liu@gmail.com>2015-02-06 15:55:04 -0800
committerGravatar Jisi Liu <jisi.liu@gmail.com>2015-02-06 15:55:04 -0800
commitd9a6f27bc333587fad88b3bc1f53b370a016ccd0 (patch)
tree0f59bedbd0b6d133b5c95219088e4f3fd6f2a700 /javanano/src/main
parent1536e93349b0f8e703060e5efddb91169c93786d (diff)
implement hashCode() for JavaNano maps.
Diffstat (limited to 'javanano/src/main')
-rw-r--r--javanano/src/main/java/com/google/protobuf/nano/InternalNano.java19
1 files changed, 19 insertions, 0 deletions
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 <K, V> int hashCode(Map<K, V> map) {
+ if (map == null) {
+ return 0;
+ }
+ int result = 0;
+ for (Entry<K, V> 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();
+ }
}