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
)。