我想从arraylist中删除多个项目。
这是清单:
String1-1, String5, String6, String1-2, String5, String6, String1-3, String5, String6
我想从列表中删除String1-
。但是因为并非所有String1-
具有相同的结尾,所以它们不会被删除。所以list.remove("String1-")
无效。
问题是:当我要删除的字符串结尾不同时,如何从arraylist中删除多个项目。
答案 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
,它只包含您指定的元素。它的美妙之处在于它是懒惰地执行的(仅在您真正想要使用它时进行评估)并且它不会修改原始集合。使您的软件状态不可变(不可修改)在大多数情况下是您可以做的最好的。处理可变集合很困难,它们通常是软件错误的原因。