我迫切需要找到一种方法,将两个不同的类与一个相似的类变量进行比较。我有两个类,一个用于Meter
,另一个用于MeterRegister
。这两个类都包含一个序列号。我正在使用ArrayList
存储Meters
和MeterRegisters
的列表。我的最终目标是要删除所有与MeterRegisters
序列号之一都不匹配的Meter
。我的问题是,如何通过使用equals类方法成功完成此任务?
下面是我的仪表课
public class Meter {
private String meterID, meterDescription;
private Float serialNum;
public Meter(){
}
public Meter(String meterID, String meterDescription, Float serialNum) {
this.meterDescription = meterDescription;
this.meterID = meterID;
this.serialNum = serialNum;
}
....getting setting.....
public boolean equals (Register o) {
if(this.serialNum == o.serialNum);
}
}
这是我的注册课程
public class Register {
int register;
String reference;
Float serialNum, phAEnergy, phBEnergy, phCEnergy;
String timeStamp, dateStamp;
public Register( int reg, String ref, Float serNum, Float phAEn, Float phBEn, Float phCEn, String time, String date) {
this.register = reg;
this.reference = ref;
this.serialNum = serNum;
this.phAEnergy = phAEn;
this.phBEnergy = phBEn;
this.phCEnergy = phCEn;
this.timeStamp = time;
this.dateStamp = date;
}
public Register() {
}
public float getSerial() {
return serialNum;
}
}
下面是我试图用来获取两个不同列表并对列表进行排序的方法
public LinkedList<Register> sortData(ArrayList<Meter> meterList,
ArrayList<Register> unsortedRegisterList) throws IOException{
LinkedList<Register> newRegisterList = new LinkedList<Register>();
for(Meter m : meterList) {
for(Register reg : unsortedRegisterList) {
if(m.serialNum.equals(reg.serialNum)) {
newRegisterList.add(reg);
}
}
}
LinkedList<Register> sortedRegisterList = new LinkedList<Register>();
printToFile(newRegisterList.toString(), "newRegisterList.txt");
}
我正在打印到.txt文件,因为当前,这是检查是否正在获取要排序的任何相关数据的最简单方法。
预先感谢, BZ
答案 0 :(得分:3)
在类上定义了equals
方法,因此该方法用于检查该 same 类的实例是否相等。根据您的需要,您可以定义一个通用方法,该方法将两个不同类型的对象作为输入,并执行临时的相等性检查。
但是,如果您有必要比较两种不同类型的对象,也许它们正试图与您交流,它们应该是相同的,或者是通过继承关联的。