我正在开发一个java应用程序,其中我使用Hashmap,它将字符串作为键,并将double作为值,但我知道Hashmap不能将原始类型作为泛型,但它可以使用double []。我可以知道为什么吗?
答案 0 :(得分:5)
您不能使用double
,因为它是原始的。但您可以改为使用Double
。
请参阅以下问题以获取更多详细信息。
Why can Java Collections not directly store Primitives types?
答案 1 :(得分:4)
所有数组都是Java中的对象,包括基本类型的数组。
这意味着您可以将它们用作泛型类型参数(而不能使用基元),例如List
元素或Map
值。他们可以站在您需要的任何地方Object
。
但请注意,数组没有equals
或hashCode
的“正确”实现,因此会在Map
中生成可怕的键(值很好。)
答案 2 :(得分:-1)
您不能使用基本类型(int,boolean,double等)作为映射键或值。但是每个基本类型都有一个包装类(int - Integer,double - Double等),你可以使用它。
从Java 1.5开始,原始值到包装器对象的转换是自动的(它被称为自动装箱/拆箱):
Map<String, Double> m = new HashMap<>();
m.add("a", 1.0 );
double a = m.get("a");