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

Java 从不包括某些值的集合中删除长度为1的字符串,java,Java,我有一个字符串类型的arraylist,其中有许多单词,在某些情况下它们只是单个字母。例如字母“K”。 我实际上是在尝试删除所有的单实例字符,除了“A”和“I”。 这是我尝试的代码/正则表达式,但没有用: //removing all single letters ArrayList<String> newList2 = new ArrayList<String>(); for(String word : words) { newList2.add(word.repl

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

//removing all single letters
ArrayList<String> newList2 = new ArrayList<String>();
for(String word : words) {
  newList2.add(word.replace("[BCDEFGHJKLMOPQRSTUVWXYZ]", ""));
}
words = newList2;
//删除所有单个字母
ArrayList newList2=新的ArrayList();
for(字符串字:字){
newList2.add(word.replace(“[bcdefghjklmopqrstuvxyz]”,“”);
}
words=newList2;
我不应该使用正则表达式吗?有没有更好的方法,或者有没有一种方法我没有正确使用正则表达式?从我的理解来看,我的实现,如果它能工作的话,只会用一个空点来替换它,而不会完全删除元素。。我的目标是完全删除元素(如果它存在的话),可能是通过.remove方法。。。我不知道该怎么办。(爪哇)


(另一方面,如果“=”和其他明显的符号,我最好也删除它们,但字符是我目前的抱怨)

无需使用流api<代码>列表#删除在这里就足够了:

list.removeIf(s -> s.length() == 1 && ! List.of("A", "I").contains(s))
注:这是一种变异操作。

带有循环的解决方案:

for(int i=0;i
您能给出一个输入和预期输出的清晰示例吗?我只是使用一个名为words的arraylist,输入就是我在问题中添加的单词。这就是arraylist“单词”的内容。使用我的方法,它不做任何事情,输出是相同的。你想要更多的信息吗?例如,在一个单词索引中有一个“K”,我想编写代码,也许通过.remove函数将其完全删除。除此之外,我不想删除一个和i个字符。不要重复一个列表,这是一个灾难的处方。如果你至少使用java 8,考虑使用列表中的移除,或者用一个空字符串替换?<代码>列表。