具有Double Array的Map get方法返回null



"Map Double[],Double-"是如何创建映射的-作为哈希映射。试图将[0.0,0.0]的Double[]输入到映射中以获取值,但它返回的值为null。

Scanner input = new Scanner(new File(fileName));
while (input.hasNextLine()) {
String[] listed = input.nextLine().split("\s+");
Double[] key = new Double[2];
Double value = 0.0;
for(int i = 0; i<3; i++) {
if(i<2) {
key[i] = Double.parseDouble(listed[i]);
} else {
value = Double.parseDouble(listed[i]);
}
}

这对代码来说非常重要,它只是从文件中读取并将其放置在HashMap中。

作为Double[]的数组没有考虑数组项的实际内容的equals/hashcode方法。只有当您使用相同的实例时,数组中的这些方法才会匹配。

因此,不能在HashMap中使用数组作为键,使用List<Double>作为键可以工作,但也有其他问题。我会用自定义的equals()/hashcode()实现来修复一个专用类。

将equls/hashcode与double一起使用也是一个很大的问题。