迭代器找不到符号方法add()

时间:2015-10-17 18:17:57

标签: java

我正在尝试遍历arraylist并根据特定条件将新Book(自定义类)添加到列表中。我的addBook功能如下。 line bookIter.add()给出了错误:'找不到符号方法add(Book)'。任何帮助将不胜感激。

由于

public void addBook(String title, String authors, String publisher, int year) {
    Iterator<Book> bookIter;
    bookIter = this.books.iterator();

    if (this.books.isEmpty()) {
        this.books.add(new Book(title, authors, publisher, year));
        System.out.println(this.books.toString());
    } else {
        while (bookIter.hasNext()) {
            Book book = bookIter.next();
            if (book.getYear() == year) {
                System.out.println("Duplicate Years. Please try again.");
            } else {
                bookIter.add(new Book(title, authors, publisher, year));
                System.out.println(this.books.toString());
            }
        }
    }

}

2 个答案:

答案 0 :(得分:4)

Iterator不包含add()方法,ListIterator可以。

尝试将其更改为:

ListIterator<Book> bookIter;
bookIter = this.books.listIterator();

答案 1 :(得分:0)

没有“简单”迭代器的添加方法。

迭代器,它是一个实现Iterator或其中一个迭代器子接口的对象。

Iterator使您可以循环访问集合,获取或删除元素。 ListIterator扩展Iterator以允许列表的双向遍历和元素的修改。

Iterator声明的方法:

boolean hasNext( )
Object next( )
void remove( )
forEachRemaining(Consumer<? super E> action)

ListIterator声明的方法:

void add(Object obj)
boolean hasNext( )
boolean hasPrevious( )
Object next( )
int nextIndex( )
Object previous( )
int previousIndex( )
void remove( )
void set(Object obj)
forEachRemaining(Consumer<? super E> action)

查看此快速教程:here

javadoc iterator this way

javadoc listiterator that way