为什么Hashmap值类型需要double []但不能加倍?

时间:2017-08-24 06:52:13

标签: java hashmap

我正在开发一个java应用程序,其中我使用Hashmap,它将字符串作为键,并将double作为值,但我知道Hashmap不能将原始类型作为泛型,但它可以使用double []。我可以知道为什么吗?

3 个答案:

答案 0 :(得分:5)

您不能使用double,因为它是原始的。但您可以改为使用Double

请参阅以下问题以获取更多详细信息。

Why can Java Collections not directly store Primitives types?

答案 1 :(得分:4)

所有数组都是Java中的对象,包括基本类型的数组。

这意味着您可以将它们用作泛型类型参数(而不能使用基元),例如List元素或Map值。他们可以站在您需要的任何地方Object

但请注意,数组没有equalshashCode的“正确”实现,因此会在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");