65

我正在使用java.util.ArrayList,我想删除所有出现的特定元素。

    List<String> l = new ArrayList<String>();
    l.add("first");
    l.add("first");
    l.add("second");

    l.remove("first");

它只删除第一次出现。但是我希望在l.remove("first");我希望 list 仅使用值“second”省略之后,删除所有出现的事件。我通过谷歌搜索发现它可以通过创建新列表和调用来实现list.removeAll(newList)。但是是否可以在不创建新列表的情况下删除所有事件,或者是否有任何 API 可用于实现它?

4

5 回答 5

139
l.removeAll(Collections.singleton("first"));
于 2012-11-26T13:35:35.830 回答
36

使用 Java 8 的另一种方式:

l.removeIf("first"::equals);
于 2015-08-07T09:08:10.860 回答
25
while(l.remove("first")) { }

这会从列表中删除所有“第一个”元素。

于 2012-11-26T13:35:19.037 回答
7

您可以使用该removeAll()方法。

list.removeAll(Arrays.asList("someDuplicateString"));
于 2012-11-26T13:41:25.660 回答
3

因为在您的示例中,您使用的是字符串,所以我想确实应该做到这一点。

for(int i = 0; i < list.size();i++){
    if(list.get(i).equals(someStringNameOrValue)){
        list.remove(i--);
    }
}

看来我误解了你的问题。我更新了我的答案。我对吗?你想删除所有出现的“第一”吗?

于 2012-11-26T13:36:13.030 回答