删除包含某些字符的数组列表中的所有字符串
Posted
技术标签:
【中文标题】删除包含某些字符的数组列表中的所有字符串【英文标题】:Remove all the strings in an array list containing certain characters 【发布时间】:2021-04-28 07:50:31 【问题描述】:所以我有一个包含字符串的数组列表,例如:
ArrayList<String> list = new ArrayList<>();
list.add("bookshelf");
list.add("bookstore");
list.add("library");
list.add("pencil");
现在我想搜索并删除 arraylist 中包含单词“book”的所有字符串。据我了解list.remove("book");
只会搜索特定的字符串“book”,而不是包含单词“book”的字符串。我该如何解决这个问题?
【问题讨论】:
【参考方案1】:你可以像这样使用removeIf
:
list.removeIf(s -> s.contains("book"));
【讨论】:
很好的答案,我认为声明removeIf
在版本 8 及更高版本中受支持是很有价值的
@NirAlfasi 它存在于 Java-8 :)【参考方案2】:
注意:此答案适用于 Java 7 及更低版本(当然,它也适用于更高版本,但 YCF_L 的答案在 8 及更高版本中更易于实现)。
要求是迭代列表,检查每个元素,如果它满足某个条件:删除它。
由于这种情况,我们陷入了一种危险的情况,即在迭代列表的同时修改列表,这是有问题的,因为当我们删除列表中的元素时,它的大小会发生变化。
为了解决这个问题,我们可以按索引从最后一个元素开始迭代列表并返回到第一个元素,这样,删除索引n
处的元素不会影响访问索引处的任何元素
我将把实施细节留给你,以免“灌输”并破坏你的锻炼:)
【讨论】:
以上是关于删除包含某些字符的数组列表中的所有字符串的主要内容,如果未能解决你的问题,请参考以下文章