首页 > 解决方案 > 使用迭代器检查具有数字 id 的特定对象的升序(行主要顺序)arraylist?

问题描述

我有一个实现迭代器的类,这个类中的每个对象都有一个引用数字的 id。

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

如何检查整个数组列表是否按每个对象的 id 升序排列?这是我写的

boolean ascending order(){
       boolean check = true;
       Iterator<Book> iter = shelf.iterator();
       while (iter.hasNext()){ \\How can I wrote here?
       }

       return check;

如何将当前 id 与下一个 id 进行比较?

标签: javaiterator

解决方案


您可以存储 的值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;
}

推荐阅读