2013-08-28 159 views
1

我想從arraylist中刪除多個項目。從ArrayList刪除多個項目

這是列表:

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

我想從列表中刪除String1-。但因爲不是所有的String1-都有相同的結尾,它們不會被刪除。所以list.remove("String1-")不起作用。

現在的問題是:如何刪除從arraylist多個項目,當我想要刪除的字符串的結尾是不一樣的。

+0

我提交了一個替代答案,如果你有時間看看它,並試圖構思它攜帶的消息。它可以幫助您避免將來發生大量的錯誤。 – allprog

回答

9

有,將做到這沒有單一的方法,但你可以很容易,如果你遍歷ArrayList做到這一點,並使用String.startsWith方法來測試該字符串是否與"String1-"開始。

這裏是一個例子。請注意,我使用了一個迭代器,因爲它比使用for循環更容易從數組中移除內容。

Iterator<String> it = arrayList.iterator(); 
while (it.hasNext()) { 
    String value = it.next(); 
    if (value.startsWith("String1-")) { 
    it.remove(); 
    } 
} 
+0

非常感謝!我得到它的工作! –

1

爲了將來的參考,這裏有一個與谷歌番石榴的解決方案。

一些設置代碼,從問題的字符串創建列表:

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僅包含的元素你指定的。這樣做的好處在於它是懶惰地執行的(只在你真的想使用它的時候才進行評估)並且它不會修改原始的集合。使您的軟件狀態不可變(不可修改)在大多數情況下是您可以做的最好的。處理可變集合很難,它們通常是軟件錯誤的原因。

+0

謝謝,也試試這個! –