从数组列表中删除包含特定字符的所有字符串。

3

我有一个包含字符串的数组列表,例如:

ArrayList<String> list = new ArrayList<>();
list.add("bookshelf");
list.add("bookstore");
list.add("library");
list.add("pencil");

现在我想搜索并删除数组列表中包含单词“book”的所有字符串。据我所知,list.remove("book"); 只会搜索特定的字符串"book",而不是包含单词"book"的字符串。我该如何解决这个问题?

2个回答

3
你可以像这样使用 removeIf 方法:
list.removeIf(s -> s.contains("book"));

好的答案,我认为指出removeIf仅支持8及以上版本会很有价值。 - Nir Alfasi
@NirAlfasi 它从Java-8开始存在 :) - Youcef LAIDANI

2
注意:此答案适用于Java版本7及以下(当然,它也适用于更高的版本,但YCF_L的答案在版本8及以上实现更简单)。
要求是迭代列表,检查每个元素,如果满足某个条件:则删除它。
由于这种情况下,我们陷入了一个风险的情况,即在迭代列表时修改它,这是有问题的,因为当我们在列表中删除一个元素时,其大小会发生变化。
为了解决这个问题,我们可以从最后一个元素开始按索引迭代列表,直到第一个元素,这样,在索引n处删除一个元素将不会影响访问任何小于n的索引处的元素。
我将把实现细节留给您,以免"喂食"和破坏您的练习 :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接