我有两个同一类的对象(包含对象列表(。我需要找到两者是否相同。
考虑以下示例:
class Device {
String deviceName;
String devLocation;
String devType;
String devID;
public String getDeviceName() {
return deviceName;
}
public void setDeviceName(String deviceName) {
this.deviceName = deviceName;
}
public String getDevLocation() {
return devLocation;
}
public void setDevLocation(String devLocation) {
this.devLocation = devLocation;
}
public String getDevType() {
return devType;
}
public void setDevType(String devType) {
this.devType = devType;
}
public String getDevId() {
return devID;
}
public void setDevId(String devId) {
this.devID = devId;
}
}
class DevList {
List<Device> deviceList;
public List<Device> getDevices() {
return deviceList;
}
public void setDevices(List<Device> deviceList) {
this.deviceList = deviceList;
}
}
需要比较devlist类的两个对象。
将在每个常规时间间隔中获得一个新的devlist对象。
每当我需要使用以前的对象验证当前对象,并且如果有任何区别,请忽略db。
当前和先前对象中的列表(Devicelist(可能不按相同的顺序。
例如:
请在下面考虑以JSON格式的两个对象(请忽略JSON格式错误(。
对象1:
{
"devList":[
{
"deviceName":"ABC",
"devLocation":"India",
"devType":"Router",
"devID":"1111"
},
{
"deviceName":"XYZ",
"devLocation":"India",
"devType":"Router",
"devID":"2222"
}
]
}
对象2:
{
"devList":[
{
"deviceName":"XYZ",
"devLocation":"India",
"devType":"Router",
"devID":"2222"
},
{
"deviceName":"ABC",
"devLocation":"India",
"devType":"Router",
"devID":"1111"
}
]
}
我们可以通过检查devid在两个对象中迭代列表来做到这一点。但是复杂性是m*n。
还有其他方法吗?
您可以在Device
中覆盖equals
来比较每个Device
对象。
类似的东西
class Device {
...
...
//your getter and setter
public boolean equals (Object obj)
{
if (Device.class != obj.getClass()) {
return false;
}
if (obj instanceof Device) {
return (deviceName.equals(((Device) obj).deviceName) &&
devLocation.equals(((Device) obj).devLocation) &&
devType.equals(((Device) obj).devType) &&
devID.equals(((Device) obj).devID));
}
return false;
}
}
现在,调用 removeAll
,它将从List1
List1.equals(List2);
所以,如果两个列表都有相同的对象列表,则List1
将为空。
步骤1:在设备类中首先覆盖相等的方法步骤2:在您的Devlist类中覆盖均等((逻辑下面 1.使用一组集合 2.从第一对象的列表中添加对象 3.检查集的大小(( 3.从第二个对象列表中添加对象 5.每次从第二列表中添加时,请检查设置的尺寸(( 6.如果超过一个列表的大小,则不等(作为集合将无法保持重复值(