【发布时间】:2014-11-21 11:58:51
【问题描述】:
我正在创建一个库类,它将类书的对象存储在 ArrayList 集合中。我拥有大部分功能,但是我想要一个删除函数,在调用时删除参数(名称)的所有对象。到目前为止我所做的函数似乎只是删除它遇到的第一个元素,然后停止执行。
我的库类看起来像这样(省略添加对象的代码):
import java.util.ArrayList;
import java.util.Iterator;
public class Library {
private ArrayList<Book> collection;
private Book book;
public Library() {
collection = new ArrayList<Book>();
}
public Book findBook(String searchBook) {
Book bookB = null;
Iterator<Book> it = collection.iterator();
boolean found = false;
while (it.hasNext() && !found) {
bookB = it.next();
String b = book.getBookName();
if (b.equals(searchBook)) {
found = true;
}
}
if (found) {
return bookB;
}
else {
return null;
}
}
public void removeBook (String searchBook) {
if (findBook(searchBook) != null && bookname.equals(searchBook)) {
Book b = findBook(searchBook);
System.out.println("Removed " + b.getBookName());
collection.remove(b);
}
else {
System.out.println("Don't worry, we don't have that one anyways");
}
}
}
我的一个朋友告诉我创建一个 foreach 循环来将 if/else 包装在 removeBook 中,但到目前为止我没有成功,因为老实说我不知道如何实现它。
非常感谢任何帮助、见解或反馈。
【问题讨论】:
-
您在寻找Iterator#remove() 吗?
-
是的,我需要遍历集合中的所有对象,然后删除每个具有相同名称的对象(字符串)
标签: java foreach while-loop iterator