创建一个新对象后:Map<Float,Integer> m = new HashMap()<Float,Integer>;我有一个数组,其中"float"数字是唯一的。我想把这些浮点数加起来作为m's key!我可以这样做:m.put(new Float(a[i]),"cat");?谢谢
Map<Float,Integer> m = new HashMap()<Float,Integer>;
"float"
m's key
m.put(new Float(a[i]),"cat");
6jygbczu1#
如果可能的话,我建议不要使用浮点数作为哈希Map键。当你查找值时,你的键必须完全匹配,很容易得到不完全正确的浮点数。
fnatzsnv2#
把所有的答案放在一起。1.上面提到的Map不能接受字符串,所以你不能说m.put(f,“cat”)1.你可以但不一定要使用Float来 Package float:auto-boxing会自动为你做,所以你可以说m.put(a[i],“cat”)1.不建议使用浮点类型(Float和Double)作为Map键。当您尝试使用get(key)方法从map中提取值时,可能会导致问题1.另请注意,浮点常量的默认类型是double,而不是float。所以,要小心使用浮动,只有在真正需要的时候才使用它们。在任何情况下,在常量附近使用float修饰符,如3.14f。
zhte4eai3#
你不能做m.put(new Float(a[i]),"cat");,因为你的值必须是Integer。要做到这一点,您必须将其声明为Map<Float,String> m = new HashMap()<Float,String>;。
Integer
Map<Float,String> m = new HashMap()<Float,String>;
wz8daaqr4#
截断到给定的精度,以生成基于浮点数的可预测键。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对象中的顶点的代码。通过设置较低的精度,它允许合并附近的折点
bwntbbo35#
你可以使用Float代替float,它会将float转换为一个对象。我从来没有试过,但我认为它会起作用
5条答案
按热度按时间6jygbczu1#
如果可能的话,我建议不要使用浮点数作为哈希Map键。当你查找值时,你的键必须完全匹配,很容易得到不完全正确的浮点数。
fnatzsnv2#
把所有的答案放在一起。
1.上面提到的Map不能接受字符串,所以你不能说m.put(f,“cat”)
1.你可以但不一定要使用Float来 Package float:auto-boxing会自动为你做,所以你可以说m.put(a[i],“cat”)
1.不建议使用浮点类型(Float和Double)作为Map键。当您尝试使用get(key)方法从map中提取值时,可能会导致问题
1.另请注意,浮点常量的默认类型是double,而不是float。所以,要小心使用浮动,只有在真正需要的时候才使用它们。在任何情况下,在常量附近使用float修饰符,如3.14f。
zhte4eai3#
你不能做
m.put(new Float(a[i]),"cat");
,因为你的值必须是Integer
。要做到这一点,您必须将其声明为Map<Float,String> m = new HashMap()<Float,String>;
。wz8daaqr4#
截断到给定的精度,以生成基于浮点数的可预测键。JavaScript中的一个例子
无用的事实:这取自用于索引3d对象中的顶点的代码。通过设置较低的精度,它允许合并附近的折点
bwntbbo35#
你可以使用Float代替float,它会将float转换为一个对象。我从来没有试过,但我认为它会起作用