У меня есть класс, реализующий итератор, каждый объект в этом классе имеет идентификатор, который ссылается на число.
public class Shelf extends Observable implements Iterable<Book>{
final static int NumRow = 10;
final static int NumCol = 10;
Book[][] books = new Book[NumRow][NumCol];
# Here is the code for Iterator<Book> iterator();
Я уже реализовал итератор с методами hasNext и Next.
class Book implement Comparable<Book>{
private int id
public int getId() {return id;}
Как я могу проверить, находится ли весь Arraylist в порядке возрастания по идентификатору каждого объекта? Это то, что я написал
boolean ascending order(){
boolean check = true;
Iterator<Book> iter = shelf.iterator();
while (iter.hasNext()){ \\How can I wrote here?
}
return check;
Как я могу сравнить текущий идентификатор со следующим идентификатором?




Вы можете сохранить значение id и проверить следующий элемент, а затем изменить значение previous.
private static boolean isOrdered() {
Iterator<Book> ite = shelf.iterator();
int previousId = Integer.MIN_VALUE;
while (ite.hasNext()) {
Book next = ite.next();
if (next.getId() < previousId) {
return false;
}
previousId = next.getId();
}
return true;
}
что, если идентификатор начинается с 5?
@jarins я обновил в соответствии с вашей проблемой, проверьте это и скажите мне
Вы можете попробовать следующий код.
public boolean checkAscendingSort(List<Book> books){
for(int i=1; i<books.size(); i++){
if (books.get(i).getId() < books.get(i-1).getId()){
return false;
}
}
return true;
}
Конечно, есть несколько способов реализовать эту функцию.
Надеюсь, это поможет , даже мой английский очень плох.
Поделитесь кодом, пожалуйста