我正在尝试遍历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());
}
}
}
}
答案 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