比较包含对象列表的同一类的两个对象



我有两个同一类的对象(包含对象列表(。我需要找到两者是否相同。

考虑以下示例:

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.如果超过一个列表的大小,则不等(作为集合将无法保持重复值(

相关内容

  • 没有找到相关文章

最新更新