从集合中删除长度为1的字符串(不包括某些值)



我有一个String类型的数组列表,其中包含许多单词,在某些情况下它们只是单个字母。例如字母";K";。我本质上是在尝试删除所有的单实例字符,除了";A";以及";我";。以下是我尝试的代码/regex,但没有成功:

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

我应该不使用regex吗?有没有更好的方法,或者有没有一种方法我没有正确使用regex?根据我的理解,如果我的实现有效,它只会用一个空的点来代替它,而不是完全删除元素。。我的目标是完全删除元素(如果存在的话(,也许可以通过.remove方法。。。不知道该怎么办。(JAVA(

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

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

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

注:这是一个变异操作。

带循环的解决方案:

for(int i=0; i < newList2.size(); i++){
if(newList2.get(i).length() == 1){
if(!newList2.get(i).equals("A") || !newList2.get(i).equals("I")){
newList2.remove(i)
}
}
}  

最新更新