gpt4 book ai didi

Java:用迭代器删除所有对象

转载 作者:行者123 更新时间:2023-12-01 12:15:15 25 4
gpt4 key购买 nike

我正在创建一个 Library 类,它将 Class Book 的对象存储在 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");
}
}

}

我的一个 friend 告诉我做一个 foreach 循环来将 if/else 包装在removeBook中,但到目前为止我没有成功这样做,因为老实说我不知道​​如何实现它。

非常感谢任何帮助、见解或反馈。

最佳答案

您将需要迭代列表的所有元素,然后检查书名是否等于您作为参数传递给removeBook方法的内容,如果找到这样的条目,则通过迭代器的remove方法将其删除。所以代码应该是这样的:

Iterator<Book> it = collection.iterator();
Book book;
while (it.hasNext()) {
book = it.next();
if (book.getBookName().equals(searchBook)) {
it.remove();
}
}

关于Java:用迭代器删除所有对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27060908/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com