Я создаю класс библиотеки, который хранит объекты класса Book в сочетании ArrayList. У меня большая часть функциональности, но мне бы хотелось, чтобы функция удаления удаляла все объекты параметра (имени) при вызове. Функция, которую я сделал до сих пор, только удаляет первый элемент, с которым он сталкивается, а затем прекращает выполнение.Java: удалить все объекты с помощью итератора
Моя библиотека классов выглядит следующим образом (код для добавления объектов опущена):
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");
}
}
}
Мой друг сказал мне, чтобы сделать петлю Еогеасп, чтобы обернуть если/другое внутри removeBook, но до сих пор я этого не делал, потому что, честно говоря, я не знаю, как его реализовать.
Любая помощь, проницательность или отзывы абсолютно приветствуются.
вы ищете [итератора # удалить()] (https://docs.oracle.com/javase/7/docs/api/java/ util/Iterator.html # remove())? –
Да, мне нужно Iterate над всеми объектами в коллекции, а затем удалить каждый объект с тем же именем (String) – Sifu