根据公共类属性比较两个不同类型的ArrayList <obj>

时间:2018-07-25 18:54:44

标签: java arraylist equals

我迫切需要找到一种方法,将两个不同的类与一个相似的类变量进行比较。我有两个类,一个用于Meter,另一个用于MeterRegister。这两个类都包含一个序列号。我正在使用ArrayList存储MetersMeterRegisters的列表。我的最终目标是要删除所有与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

1 个答案:

答案 0 :(得分:3)

在类上定义了equals方法,因此该方法用于检查该 same 类的实例是否相等。根据您的需要,您可以定义一个通用方法,该方法将两个不同类型的对象作为输入,并执行临时的相等性检查。

但是,如果您有必要比较两种不同类型的对象,也许它们正试图与您交流,它们应该是相同的,或者是通过继承关联的。