如果Key字段是类的实例,如何更新HashMap中的值?

维维克·辛格(Vivek Singh)

假设我有一个代码片段:

package practice;
import java.util.*;

public class Practice {
    public static void main(String[] args) {
        Map<Temp,Integer> m = new HashMap<>();
        m.put(new Temp(1,2), 5);
        m.put(new Temp(1,2), 6);
        System.out.println(m.size());
    }
}

class Temp {
    int x, y;
    public Temp(int a, int b) {
        this.x = a;
        this.y = b;
    }
}

输出: 2

我正在尝试更新与对象相对应的值,new Temp(1,2)但它是插入而不是替换它。这就是为什么大小是2如何替换旧值?

亚伦

Java默认情况下会比较引用,除非您实现equalshashCode方法:

class Temp {
    // ...

    public boolean equals(Object obj) {
        Temp temp = (Temp)obj;
        return temp.x == this.x && temp.y == this.y;
    }

    public int hashCode() {
        return Objects.hash(this.x, this.y);
    }
}

然后:

System.out.println(m.size()); // 1

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何更新类实例 Python 的值

如何在Python中定义作为类实例的类字段?

如何在可变HashMap中更新值?

如果设置的值为空,如何将类中的字段设置为false?

如何获取类的每个实例的字段值数组?

如果值不为空,如何更新 mysqli 字段

使用多重处理来更新类实例列表中的值

如何更新codeigniter中的输入字段值

如何避免检索实例以更新 Django 中的字段

Django:如何更改字段的值或更新model / Db中的字段?

如果条目存在,如何更新模型中的选定字段?

Firebase 更新实例如果值存在

如何获取存储在ArrayList <HashMap <key,value >>中的值?

如何从 HashMap 中获取对应于最大值的 Key?

插入或更新值后如何获取HashMap中的键数?

在类的实例中依赖值

如果弹性搜索中的值不为空,如何计算字段

如果值未定义,如何从嵌入中删除字段?

Flutter - Dart - Reflectable 包:如何:获取类字段类型?从类/类型实例化对象?使用 Reflectable 设置字段值

如果是类字段,如何取 R.string 值而不是硬编码值?

如果Key的哈希码相同但equals方法返回false,则HashMap如何检索不同的值

更新类实例上的属性值

Scala / Shapeless:在案例类实例中更新命名字段

如果字段值不为 0,Mysql 更新

如果键在列表中,如何更新嵌套字典中的值?

如何检索 namedtuple 类(不是实例)的字段?

静态字段 - 如果仅从类创建一个实例

当您解析字段的值以更新字段时如何更新 jq 中的字段值(又名重新格式化值)

如果key是mongodb中的uuid,如何选择值