有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java中基于等式的哈希代码生成

我将把数据库中存在的对象列表(Employee实体类)提取到List1。我将从excel工作表中读取对象列表,称为List2

Employee实体类将具有多个属性,如firstName、middleName、lastName、age、phoneNumber、address、SSN、employeeId等

基于以下任一条件,列表1中的对象o1将等于列表2中的对象o2: 1.o1和o2的名字、中间名和姓氏相等。 2.o1和o2的SSN相等。 3.o1和o2的雇员ID相等

如果o1和o2基于上述任一条件相等,则意味着它应将o2的地址、电话号码等属性更新为o1。 如果o1!=o2,然后在数据库中创建一个新记录。 以上内容可以通过对这些列表进行多次迭代来实现

但我正在寻找一种设计来构造两个HashMaps map1和map2,一个用于现有记录(列表1),另一个用于excel工作表中的新记录(列表2)

HashMap的键应该是[firstName、middleName、lastName]或[SSN]或[employeeId]的哈希代码,该值将是整个对象。 这样我可以从map1中获取密钥,并在map2中按密钥查找,如果存在,则将map2中的其他属性更新为map1,并将其保存到数据库中

不确定如何构建此HashCode方法。这可能还是会违反标准


共 (1) 个答案

  1. # 1 楼答案

    这里只有两个标准:

    1. {cd2}如果它们在^中被称为{cd2},那么它们应该在^中被称为{cd1}
    2. hashCode应该只依赖于对象的字段

    在这种情况下,无法按照上述规则构建hashCode

    因为你可以有三个人:

    • 第一名和第二名的名字、中间名和姓氏相同
    • 第二和第三将具有相同的SSN,但名称不同

    这三个人都应该返回相同的hashCode,因为他们是equal。但是它们的hashCode应该只依赖于字段。 结论是——在这种情况下,{}将取决于比较的上下文,而不仅仅是字段。怎么了