Java HashMap-Key 和 float问题

SandKing 发布于 08/07 15:11
阅读 129
收藏 0
  1. HashMap的key不是通过HashCode来判断命中的么
    Map<Object,Object> map = new HashMap<>();
    map.put((short)1,"aa");
    Console.log(map.get(1));

    这样取出来是null!!!

    Object _short = (short)1;
    Object _int = 1;
    int h = 0;
    Console.log((h = _short.hashCode()) ^ (h >>> 16));
    h = 0;
    Console.log((h = _int.hashCode()) ^ (h >>> 16));

    但是hashcode的值是一样的啊?求大神解惑!!

  2. Console.log((int)127386106.0f);

    float值127386106.0f强转int变成了127386104?这个值既没有超int上限也没有超float的上限啊

加载中
0
红薯官方
红薯官方

因为:

Float key = (float)1,

Integer key = Integer.valueOf(1),

Key 必须是一个Object,不能是primitive类型,Java会自动的将它装箱(即会转成Float、Integer等包装类)!

红薯官方
红薯官方
回复 @SandKing : 第二题解答要从二进制数表示说起,我解答不了这个问题。平常不会这么暴力的转换一个数字。
SandKing
SandKing
第一个问题,知道了equals不相等。第2个问题精度丢失有点不解
返回顶部
顶部