将同一类的不同对象与其内容(如 jobTitleId、classificationId、deptId 和 classificationId)进行比较,稍后使用 Set 和 Map 进行一些操作。我可以通过简单地覆盖 Object 类的 equals 和 hashCode 方法来做到这一点,并且能够获取信息(如下面的地图中所示)。
Map<LocationData, List<LocationData>>
以下是我使用的类(已向您展示,以便可以参考我的问题陈述):
位置数据类
package com.astreait.bulkloader;
public class LocationData {
String locId, deptId, jobTitleId, classificationId;
@Override
public boolean equals(Object obj) {
LocationData ld = (LocationData)obj;
return this.deptId.equals(ld.deptId) && this.jobTitleId.equals(ld.jobTitleId) && this.classificationId.equals(ld.classificationId) &&
this.locId.equals(ld.locId);
}
@Override
public int hashCode() {
return deptId.hashCode() + jobTitleId.hashCode() + classificationId.hashCode() +locId.hashCode();
}
}
问题:
我已经知道我需要对这个对象的所有字段进行比较。即我必须使用名为classificationId、deptId、jobTitleId & locId 等的变量。
需要:我需要自定义此逻辑,以便可以动态提取字段名称(classificationId、deptId、jobTitleId 和 locId 等)及其值。因此,据我了解,我使用了 2 个类(TableClass 和 ColWithData),这样 ColWithData 的列表就在 TableClass 对象中。
我在想如果我覆盖相同的两种方法equals() & hashCode();
以实现相同的效果。
TableClass class #1
class TableClass{
List<ColWithData> cwdList;
@Override
public boolean equals(Object obj) {
boolean returnVal = false;
// I need to have the logic to be defined such that
// all of the dynamic fields can be compared
return returnVal;
}
@Override
public int hashCode() {
int returnVal = 0;
// I need to have the logic to be defined such that
// all of the dynamic fields can be found for their individual hashCodes
return returnVal;
}
}
ColWithData 类 #2
class ColWithData{
String col; // here the jobTitleId, classificationId, deptId, locId or any other more fields info can come.
String data; // The corresponding data or value for each jobTitleId, classificationId, deptId, locId or any other more fields.
}
请让我知道我是否朝着正确的方向前进,或者我应该采取任何其他方法。如果可以使用当前方法,那么在 equals 和 hashCode 方法中应该执行什么?
最后我需要将地图制作为:(这不是我将如何制作的问题,但可以认为是我想要的逻辑结果)
Map<TableClass, List<TableClass>> finalMap;
编辑我被否决了。因此,我再次对我的要求进行了一些修改。(请帮我解决这个问题)