【发布时间】:2015-10-22 21:08:33
【问题描述】:
我正在创建一个删除方法,该方法通过列表标题(字符串)、卖家(字符串)和价格(整数)删除项目。此方法旨在遍历每个列表以查找图书项目。如果找到图书项目,则应将其从列表中删除(即列表 titleMap)。如果找不到图书项目,我想抛出一个 BookStoreExeption。
我将如何在方法中抛出异常?我曾想过使用 while 循环,但不确定如何实现它。
如果有人能给我任何提示或解决问题的方法,那就太好了。另外,请随意批评代码,我感觉它在测试时不起作用。 (初学者)
@Override
public void remove(IBookItem book) throws BookStoreException{
for(Iterator<BookEntry<String, ArrayList<BookItem>>> it = titleMap.iterator(); it.hasNext();){
BookEntry<String, ArrayList<BookItem>> bookEntry = (BookEntry<String,ArrayList<BookItem>>)it.next();
if(bookEntry.getValue().equals(book.getTitle())){
bookEntry.getValue().remove(book);
titleMap.remove();
System.out.println("book Removed (via titleMap): " + book);
}
}
for(Iterator<BookEntry<String, ArrayList<BookItem>>> it = titleMap.iterator(); it.hasNext();){
BookEntry<String, ArrayList<BookItem>> bookEntry = (BookEntry<String,ArrayList<BookItem>>)it.next();
if(bookEntry.getValue().equals(book.getSeller())){
bookEntry.getValue().remove(book);
sellerMap.remove();
System.out.println("Book Removed (via sellerMap): " + book);
}
}
for(Iterator<BookEntry<String, ArrayList<BookItem>>> it = titleMap.iterator(); it.hasNext();){
BookEntry<String, ArrayList<BookItem>> bookEntry = (BookEntry<String,ArrayList<BookItem>>)it.next();
if(bookEntry.getValue().equals(book.getPrice())){
bookEntry.getValue().remove(book);
titleMap.remove();
System.out.println("Book Removed (via priceMap): " + book);
}
}
}
【问题讨论】:
-
所有三个循环都使用
titleMap.iterator()。你是故意的吗?