У меня есть список объектов, скажем, Article
, который является довольно сложным, вложенным объектом. Я опущу реальный класс, так как он не должен иметь значения; вероятно, важно знать, что Article
имеет equals()
реализовано (с AutoValue).
У меня есть два списка:
List<Article> list1 = getSomeArticles();
List<Article> list2 = getOtherArticles();
Теперь я проверяю, равны ли они:
boolean listsAreEqual = list1.equals(list2);
это возвращает false
.
Но я проверяю, если. оба списка имеют одинаковый размер и б. каждый элемент с индексом i
в обоих списках равен:
if (list1.size() != list2.size()) {
return;
}
for (int i = 0; i < list1.size(); i++) {
Article article1 = list1.get(i);
Article article2 = list2.get(i);
if (!article1.equals(article2)) {
return;
}
}
// All items in the two lists are equals, but list2.equals(list2) is false
Кажется, что оба списка содержат одинаковые элементы, но list1.equals (list2) возвращает false
.
Как это может быть?