У меня есть два списка типов E Список list1, Список list2. Объект E является классом POJO, который содержит строку следующих данных. Оба списка содержат одинаковые данные. Например, в последнем столбце, если я изменю false на true, он не сможет обнаружить.Сравнить два списка <E> независимо от порядка
| statusId | statusName | statusState | isRequire |
| 3 | Approved | APPROVED | false |
| 201 | Attributed | REJECTED | true |
| 202 | Denied | REJECTED | false |
| 204 | Fraud | REJECTED | false |
| 205 | Insufficient | REJECTED | false |
| 206 | Invalid | REJECTED | false |
| 207 | Cancelled | REJECTED | false |
| 208 | Cannot traced | REJECTED | false |
| 209 | Transaction online | REJECTED | false |
| 210 | Voucher | REJECTED | false |
| 211 | does not meet req | REJECTED | false |
Я хочу написать функцию так, чтобы, если данные, эти два списка отличаются друг от друга, то это может быть обнаружено. Следующий мой код, но кажется, что он всегда дает «false», являются ли данные одинаковыми или разными в обоих списках.
private boolean compareLists(List<Status> actualStatuses, List<Status> expectedStatuses) {
boolean indicator = false;
if (actualStatuses!= null && expectedStatuses!=null && actualStatuses.size() == expectedStatuses.size()){
for (Status expectedStatusData : expectedStatuses){
for(Status actualStatusData : actualStatuses){
if(actualStatusData.getStatusId() == expectedStatusData.getStatusId()
&& actualStatusData.getStatusName().equals(expectedStatusData.getStatusName())
&& actualStatusData.getStatusState().equals(expectedStatusData.getStatusState())
&& actualStatusData.isEnable() == expectedStatusData.isEnable()
&& actualClaimStatusData.isRequire() == expectedStatusData.isRequire()){
indicator = true;
break;
}
else indicator = false;
}
}
if (indicator)
return true;
}
else
return false;
return indicator;
}
Вы лучше иметь 'equals' (+ 'hashCode') переопределяются в вашем классе' Status', поэтому вы можете избежать этой большой строки 'if', и ваш код будет намного читабельнее. –