【发布时间】:2019-02-06 14:50:18
【问题描述】:
一些背景知识:我是 Java 新手,正在学习基本的 Java 课程。我目前正在进行课程的最后一个项目,并完成了除了最后一段代码之外的所有内容。出于某种原因,我很难从数组列表中删除一个元素。这是我正在处理的代码:
public static void delete(String bookID) {
for (book eachElement : catalog) {
if (eachElement.getBookID().equals(bookID)) {
catalog.remove(eachElement);
return;
}
}
}
代码执行,没有运行时错误,但不会删除任何内容。 另外,我知道在 remove 语句之前一切正常,因为我有另一种方法可以使用与 select bookID 字符串相同的 for 和 if 语句来计算计算。
【问题讨论】:
-
它不会删除任何东西 - 可能是因为没有带有 arg bookId 的元素?
-
您应该检查您的 bookID 是否真的等于列表中的 ID 之一,包括大小写等。为此使用调试器。但是一旦你这样做了 - 你会得到一个并发更新异常,因为你应该只能在迭代它时从列表中删除,如果你使用列表的迭代器(显式)。
-
检查this
-
@RealSkeptic 他应该没问题,因为在删除它之后
returns(虽然这不是好的做法)。 -
由于这是一个静态方法,这意味着您的
catalog也是静态的,您确定它没有在代码中的其他地方更新吗?