我正在使用java.util.ArrayList
,我想删除所有特定元素的出现。
List<String> l = new ArrayList<String>();
l.add("first");
l.add("first");
l.add("second");
l.remove("first");
它只删除第一次出现。但是我希望在l.remove("first");
之后删除所有出现的事件。我希望列表只剩下值“second”。我通过谷歌搜索发现,可以通过创建新列表并调用list.removeAll(newList)
来实现。但是可以在不创建新列表的情况下删除所有匹配项,或者是否有可用的API来实现它?
答案 0 :(得分:118)
l.removeAll(Collections.singleton("first"));
答案 1 :(得分:28)
使用Java 8的另一种方式:
l.removeIf("first"::equals);
答案 2 :(得分:22)
while(l.remove("first")) { }
这将从列表中删除所有元素“first”。
答案 3 :(得分:7)
您可以使用removeAll()
方法。
list.removeAll(Arrays.asList("someDuplicateString"));
答案 4 :(得分:1)
因为在你的例子中你正在使用字符串,我想应该这样做。
for(int i = 0; i < list.size();i++){
if(list.get(i).equals(someStringNameOrValue)){
list.remove(i--);
}
}
看起来我误解了你的问题。我更新了我的答案。我对吗?你想删除所有出现的“第一个”?