创建新对象后:Map<Float,Integer> m = new HashMap()<Float,Integer>;
我有一个"float"
个数字的数组是唯一的。我想将这些浮点数添加为m's key
!我可以这样做:m.put(new Float(a[i]),"cat");
?
感谢
答案 0 :(得分:5)
如果可能的话,我建议不要使用浮点数作为哈希映射键。当您查找值时,您的密钥必须完全匹配,并且很容易得到不完全正确的浮点数。
答案 1 :(得分:2)
只是为了得到所有答案。
答案 2 :(得分:0)
您无法执行m.put(new Float(a[i]),"cat");
,因为您的值必须是Integer
。为此,您必须将其声明为Map<Float,String> m = new HashMap()<Float,String>;
。
答案 3 :(得分:0)
截断到给定的精度以基于浮点数生成可预测的键。 JavaScript中的示例
const precision = Math.pow(10, 4); // where 4 is number of decimal places to retain
const a = 12.5678912331; b = 13.75324122; c = 21.32112221
const key = '' + Math.floor(a * precision) + '_' + Math.floor(b * precision) + '_' + Math.floor(c * precision);
const aMap = new Map();
aMap.set(key, 'some value');
无用的事实:这是从用于索引3d对象中的顶点的代码中获取的。通过设置较低的精度,可以合并附近的顶点