HashMap

2018-11-22  本文已影响0人  JavaHub
  1. key的hash函数(计算键哈希值)
static final int hash(Object var0) {
      int var1;
      //var1 >>> 16 取高16位;  ^ 异或
      return var0 == null ? 0 : (var1 = var0.hashCode()) ^ var1 >>> 16;
}
  1. 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,没有取到;大家也不要用错啊

上一篇 下一篇

猜你喜欢

热点阅读