HashMap
2018-11-22 本文已影响0人
JavaHub
- key的hash函数(计算键哈希值)
static final int hash(Object var0) {
int var1;
//var1 >>> 16 取高16位; ^ 异或
return var0 == null ? 0 : (var1 = var0.hashCode()) ^ var1 >>> 16;
}
- Long类型的123和String类型的123,在hashmap的位置一样吗?
//hashmap 存放不同类型数据,key一样吗
String a = "123";
Long b = 123L;
//hashmap key值
int var1;
//var1 >>> 16 取高16位; ^ 异或
int a_key = (var1 = a.hashCode()) ^ var1 >>> 16;
int b_key = (var1 = b.hashCode()) ^ var1 >>> 16;
System.out.println("a hashcode: "+a.hashCode()+" a_key: "+a_key);
System.out.println("b hashcode: "+b.hashCode()+" b_key: "+b_key);
结果:
a hashcode: 48690 a_key: 48690
b hashcode: 123 b_key: 123
问题来源,我在存放司机位置信息时,redis的map结构的key存放的是Long类型的userId;同事在取用时用String类型的userId,没有取到;大家也不要用错啊