Предполагая, что ваш список содержит пользовательский объект. Если это так, просто перезапишите метод compareTo
в вашем пользовательском объекте, а затем выполните итерацию по List
, проверяя каждый соответствующий элемент.
Например:
Вот пользовательский объект Book, который implements Comparable
:
public class Book implements Comparable {
String isbn;
String title;
public Book(String id, String title) {
this.isbn = id;
this.title = title;
}
String getIsbn() {
return isbn;
}
String getTitle() {
return title;
}
@Override
public int compareTo(Object o) {
return Comparator
.comparing(Book::getIsbn)
.thenComparing(Book::getTitle)
.compare(this, (Book) o);
}
@Override
public String toString() {
String output = new StringBuilder()
.append(isbn).append(":").append(title)
.toString();
return output;
}
}
Следующее создает два списка (для представления списка БД и списков пользовательского интерфейса). ), а затем сравнивает их по позиции в списке (а именно «соответствующая строка»):
public void CompareTwoLists(){
List<Book> libraryUI = new ArrayList<>();
libraryUI.add(new Book("9780593098240", "Children of Dune"));
libraryUI.add(new Book("9780593098233", "Dune Messiah"));
libraryUI.add(new Book("9780441172719", "Dune"));
List<Book> libraryDB = new ArrayList<>();
libraryDB.add(new Book("9780593098240", "Children of Dune"));
libraryDB.add(new Book("9780593098233", "Dune Messiah"));
libraryDB.add(new Book("9788886845687", "God Emperor of Dune"));
boolean theSame = Boolean.TRUE;
if(libraryDB.size() != libraryUI.size()) {
theSame = Boolean.FALSE;
} else {
for(int i = 0; i < libraryDB.size(); i++) {
if (libraryDB.get(i).compareTo(libraryUI.get(i)) != 0) {
theSame = Boolean.FALSE;
break;
}
}
}
if(theSame) {
System.out.println("The same");
} else {
System.out.println("Not the same");
}
}