从字符串列表中删除一个字符串项。

13

如何从包含字符串的列表中删除特定字符串:

例如:

ArrayList<String> myStrings = new ArrayList<>();
myStrings.add("Alpha");
myStrings.add("Beta");
myStrings.add("Gama");
.                           //The order can be random 
.
.
.

现在,我只有一个名为myStrings的列表,我不知道哪个字符串位于哪个索引位置。但是我知道,我想要在删除“Alpha”后显示所有字符串。

总结一下,如何从一个String数组中获取字符串,在删除我知道数组包含但不知道其索引/位置的字符串之后。


2
迭代它们并自己实现逻辑。 - Stultuske
5个回答

20

使用 remove:

myStrings.remove("Alpha");

请注意,这将仅删除列表中第一个出现的“Alpha”。


它是一个布尔值,不符合我的要求来获取字符串值。 - asdec90
@asdec90 它从列表中移除了“Alpha”。如果找到并删除了“Alpha”,则返回“true”。在您删除它之后,可以遍历列表并显示剩余的字符串。我假设您知道如何遍历列表。最简单的方法是 for (String s : myStrings) {...} - Eran

4
boolean remove(Object o)

ArrayList类的上述方法将从列表中移除Object o的第一个匹配项。
你可以执行以下操作:
myStrings.remove("Alpha");

如果ArrayList包含指定的元素,它将返回true


2

你是否在字符串列表中有重复项需要移除?

如果是的话,你可以将字符串列表转换为字符串集合。然后,你可以高效地从集合中删除字符串,再将其转换回映射表。

// converting to set will remove duplicates
final Set<String> uniqueStrSet = new HashSet<String>(listOfString);

// remove string from set
uniqueStrSet.remove(strToRemove);

// convert set back to list
list = new ArrayList<String>(uniqueStrSet);

2

如果这个不起作用

myStrings.remove("Alpha");

试试这个,它在我这里运行得很好

int pos = myStrings.indexOf("Alpha");//Getting string position
myStrings.remove(pos);

0
如果你经常使用不可变列表,那么你将无法使用remove方法;相反,你会得到一个UnsupportedOperationException
改用Lambda表达式代替:
List<String> filteredList = myStrings.stream()
        .filter(toRemove -> !"Alpha".equals(toRemove))
        .toList();

那就是这个意思。它应该根据您的具体用例进行调整。
注意:在使用字面值时,Sonarqube建议使用"Alpha".equals(...)。请不要因此责备我。

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