问题是:
此方法将作者的名称作为String参数,并返回该作者编写的所有书籍的arraylist。它使用while循环和一个interator,找到该作者写的书(case = insensitive)并将它们添加到另一个arraylist。
到目前为止,我已经得到了:public ArrayList<Book> getBooksByAuthor(String authorName){
Iterator<Book> it = books.iterator();
ArrayList books = new ArrayList<String>();
while(it.hasNext()){
Book b = it.next();
if(authorName.equalsIgnoreCase(b.getBookAuthor())){
books.add(b.getBookTitle());
}
}
return books;
}
我问的问题是这个问题要我完全做什么?返回一个arraylist意味着你需要重新创建这些对象?我对我在这里想做的事感到困惑......提前致谢
答案 0 :(得分:3)
您的方法返回ArrayList<Book>
。
您的变量被声明为ArrayList
原型。
您的运行时类型为ArrayList<String>
。
怎么样:
public List<Book> getBooksByAuthor(String authorName){
return books.stream()
.filter(book -> authorName.equalsIgnoreCase(book.getBookAuthor()))
.collect(Collectors.toList());
}