尝试了几种方法来比较带有对象字段的不同对象列表之间,例如,一个列表包含DeviceRow.ip,另一个列表包含Device.ip
我试图在两个列表上运行,其中较短的列表位于外部for循环中,以便遍历整个列表项。
这是我尝试过的代码的实现:
private boolean compareDeviceRowFields(DeviceRow[] deviceRowsArr) {
try {
List<DeviceRow> deviceRowList = Arrays.asList(deviceRowsArr);
if (deviceRowList.size() > devicesLstFromJson.size()) {
for (DeviceRow deviceRow : deviceRowList) {
boolean found = false;
for (Device device : devicesLstFromJson) {
if (checkFields(deviceRow.deviceIp, device.ip)) {
info("Device Row ip is =[%s]", deviceRow.deviceIp);
info("Device json file ip is =[%s]", device.ip);
if (checkFields(deviceRow.vendor, device.vendor)) {
found = true;
break;
}
}
}
if (!found) {
return false;
}
}
}
} catch (Exception e) {
info(e.getMessage());
}
return true;
}
预期结果为true,如果较短列表包含较长列表中的所有项目,则为false。 我也想为这个问题找到更优雅的解决方案。