从ArrayList中删除多个项目

时间:2013-08-28 15:18:56

标签: java android string arraylist

我想从arraylist中删除多个项目。

这是清单:

String1-1, String5, String6, String1-2, String5, String6, String1-3, String5, String6

我想从列表中删除String1-。但是因为并非所有String1-具有相同的结尾,所以它们不会被删除。所以list.remove("String1-")无效。

问题是:当我要删除的字符串结尾不同时,如何从arraylist中删除多个项目。

2 个答案:

答案 0 :(得分:9)

没有一种方法可以做到这一点,但是如果你遍历ArrayList并使用String.startsWith方法测试字符串是否以{{1}开头,你可以很容易地做到这一点。 }。

这是一个例子。请注意,我使用了迭代器,因为它比使用"String1-"循环更容易从数组中删除内容。

for

答案 1 :(得分:1)

以下是Google Guava的解决方案。

一些设置代码,用于根据问题的字符串创建列表:

String stringsString = "String1-1, String5, String6, String1-2, String5, String6, String1-3, String5, String6";
String[] stringsArray = stringsString.split(", ");
Iterable<String> stringsList = Arrays.asList(stringsArray);

现在过滤掉不需要的项目:

Iterable<String> filtered = Iterables.filter(stringsList, new Predicate<String>() {
    @Override
    public boolean apply(String input) {
        return !input.startsWith("String1-");
    }
});

这个简单的例程创建一个新的Iterable,它只包含您指定的元素。它的美妙之处在于它是懒惰地执行的(仅在您真正想要使用它时进行评估)并且它不会修改原始集合。使您的软件状态不可变(不可修改)在大多数情况下是您可以做的最好的。处理可变集合很困难,它们通常是软件错误的原因。