java - 具有返回 null 的双数组 get 方法的映射

标签 java arrays hashmap

“Map-Double[], Double-”是映射的创建方式 - 作为 HashMap 。 尝试将 [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>因为 key 可以工作,但还有其他问题。我会推荐一个带有自定义的专门类(class) equals()/hashcode()实现。

将 equls/hashcode 与 double 一起使用也存在很大问题。

关于java - 具有返回 null 的双数组 get 方法的映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61044243/

相关文章:

java - 无法启动 Tomcat 服务器实例

Java调用方法

javascript - 使用 underscore.js 从对象数组中获取最小值和最大值

php - 获取json数组的值

通过 memcpy 复制数组

java - 当已经溢出时是否可以预测算术结果?

用于 Unicode 或特殊字符的 Java 正则表达式

Java Linkedhashmap 与 ArrayList 空 checkin

Java hashmap在数据库中的映射

java - 如何确保/强制 HashMap 中的平等分配?