Использовать итератор для проверки иерархии списка определенного объекта с числовым идентификатором в порядке возрастания (основной порядок строк)?

У меня есть класс, реализующий итератор, каждый объект в этом классе имеет идентификатор, который ссылается на число.

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;

Как я могу сравнить текущий идентификатор со следующим идентификатором?

Поделитесь кодом, пожалуйста

azro 10.10.2018 17:37
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
4
1
143
2

Ответы 2

Вы можете сохранить значение 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 10.10.2018 18:09

@jarins я обновил в соответствии с вашей проблемой, проверьте это и скажите мне

azro 11.10.2018 00:02

Вы можете попробовать следующий код.

    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;
    }

Конечно, есть несколько способов реализовать эту функцию.

Jack Xia 10.10.2018 18:08

Надеюсь, это поможет , даже мой английский очень плох.

Jack Xia 10.10.2018 18:15

Другие вопросы по теме