小编Veg*_*ard的帖子

为什么 HashMap 不能有不同的 NaN 值作为键?

import java.util.*;

public class MyClass {
    public static void main(String args[]) {
      Map<Float, Integer> m = new HashMap<>();
      
      m.put(Float.intBitsToFloat(0x7f800001), 1);
      m.put(Float.intBitsToFloat(0x7f800002), 2);
      
      System.out.println(m.size());
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么上面的代码返回的1大小是m0x7f8000010x7f800002都是 NaN 浮点值,但根据NaN != NaN定义,这不应导致冲突。

该行为类似于nullJava Hashmap 中记录的键处理,但我找不到任何表明该处理NaN是由 HashMap 处理的内容null

java hashmap data-structures

2
推荐指数
1
解决办法
195
查看次数

标签 统计

data-structures ×1

hashmap ×1

java ×1