首页 > 解决方案 > 从 Collection 中删除长度为 1 的字符串,不包括某些值

问题描述

我有一个字符串类型的数组列表,其中包含许多单词,在某些情况下它们只是单个字母。比如字母“K”。我实际上是在尝试删除所有单实例字符,除了“A”和“I”。这是我尝试的代码/正则表达式,但无济于事:

//removing all single letters
ArrayList<String> newList2 = new ArrayList<String>();
for(String word : words) {
  newList2.add(word.replace("[BCDEFGHJKLMOPQRSTUVWXYZ]", ""));
}
words = newList2;

我不应该使用正则表达式吗?有没有更好的方法,或者有没有办法我没有正确使用正则表达式?根据我的理解,我的实现,如果它甚至工作,只会用一个空白点替换它,而不是完全删除元素。我的目标是完全删除元素,如果它存在,也许通过 .remove 方法......不确定如何解决这个问题。(JAVA)

(PS,理想情况下,如果它们很明显,我也会删除“=”和其他符号,但字符是我目前的抱怨)

标签: java

解决方案


无需为此使用流 api。List#removeIf在这里就足够了:

list.removeIf(s -> s.length() == 1 && ! List.of("A", "I").contains(s))

注意:这是一个变异操作。


推荐阅读