簡體   English   中英

從ArrayList中刪除多個項目

[英]Remove multiple items from ArrayList

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

這是清單:

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

我想從列表中刪除String1- 但是因為不是所有的String1-都具有相同的結尾,所以不會將它們刪除。 因此list.remove("String1-")無法正常工作。

問題是:當我要刪除的字符串的末尾不相同時,如何從arraylist中刪除多個項目。

沒有單個方法可以執行此操作,但是如果您遍歷ArrayList並使用String.startsWith方法來測試字符串是否以"String1-"開頭,則可以輕松地完成此操作。

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

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

為了將來參考,以下是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 ,它僅包含您指定的元素。 這樣做的好處是,它懶惰地執行(僅在您確實要使用它時才進行評估),並且它不會修改原始集合。 在大多數情況下,使軟件狀態不變(不可修改)是您所能做的最好的事情。 處理可變集合很困難,並且通常是導致軟件錯誤的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM