Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中将原语或对象放入对象映射的区别_Java_Object_Hashmap_Double_Primitive Types - Fatal编程技术网

Java中将原语或对象放入对象映射的区别

Java中将原语或对象放入对象映射的区别,java,object,hashmap,double,primitive-types,Java,Object,Hashmap,Double,Primitive Types,我有一张简单的地图: Map<String, Object> myMap; 第二,当我将我的double值作为基本类型时: myMap.put("primitive", myPrimitiveDouble); 我认为第一个是不必要的,对吗? 谢谢你的回答 当您将原语double作为值放入Map时,它将自动装箱为double类型,因为通用集合(包括映射)不使用原语 这就是所谓的 因此,在这种情况下,Double.valueOf调用确实是多余的 示例 Map<String, O

我有一张简单的地图:

Map<String, Object> myMap;
第二,当我将我的
double
值作为基本类型时:

myMap.put("primitive", myPrimitiveDouble);
我认为第一个是不必要的,对吗?
谢谢你的回答

当您将原语
double
作为值放入
Map
时,它将自动装箱为
double
类型,因为通用集合(包括映射)不使用原语

这就是所谓的

因此,在这种情况下,
Double.valueOf
调用确实是多余的

示例

Map<String, Object> myMap = new HashMap<>();
double foo = 5;
myMap.put("", foo);
System.out.println(myMap.get("").getClass());
注意

Map<String, Object> myMap = new HashMap<>();
double foo = 5;
myMap.put("", foo);
System.out.println(myMap.get("").getClass());
当使用
对象
数字
参数化集合时,Java将自动将原语
装箱到


但是,如果映射值使用不兼容的类型(例如
Integer
)进行参数化,则代码将无法编译

当您将原语
double
作为值放入
Map
时,它将自动装箱为
double
类型,因为通用集合(包括映射)不使用原语

这就是所谓的

因此,在这种情况下,
Double.valueOf
调用确实是多余的

示例

Map<String, Object> myMap = new HashMap<>();
double foo = 5;
myMap.put("", foo);
System.out.println(myMap.get("").getClass());
注意

Map<String, Object> myMap = new HashMap<>();
double foo = 5;
myMap.put("", foo);
System.out.println(myMap.get("").getClass());
当使用
对象
数字
参数化集合时,Java将自动将原语
装箱到


但是,如果映射值使用不兼容的类型(例如
Integer
)进行参数化,则代码将无法编译

对不起,首先你说“不要使用原语”,然后说“在这种情况下它确实是多余的”,所以我可能误解了一些东西。@victorio Java集合不使用原语。您可以使用原语,如果与通用参数化兼容,原语将自动装箱到其对象包装器中。啊,好的,现在清楚了!非常感谢你!而且双原语不能为null,所以我不能在地图上输入null,对吗?@victorio,不客气。您说原语不可为null是对的,但是,您可以在大多数Java映射中设置
null
值(除了一些例外,例如
ConcurrentSkipListMap
)。对不起,首先您说“不要使用原语”,然后说“在这种情况下它确实是多余的”,所以我可能误解了一些东西。@victorio Java集合不使用原语。您可以使用原语,如果与通用参数化兼容,原语将自动装箱到其对象包装器中。啊,好的,现在清楚了!非常感谢你!而且双原语不能为null,所以我不能在地图上输入null,对吗?@victorio,不客气。您说原语不可为null是正确的,但是,您可以在大多数Java映射中放置
null
值(除了一些例外,例如
ConcurrentSkipListMap
)。