使用 Iterator 從列表中刪除匹配項

上面我注意到一個從迴圈中的 List 中刪除專案的示例,我想到了另一個可能在這次使用 Iterator 介面時派上用場的示例。
這是一個技巧的演示,在處理你想要刪除的列表中的重複項時可能會派上用場。

注意:這只是新增到迴圈示例中從列表中刪除專案

所以讓我們像往常一樣定義我們的列表

    String[] names = {"James","Smith","Sonny","Huckle","Berry","Finn","Allan"};
    List<String> nameList = new ArrayList<>();

    //Create a List from an Array
    nameList.addAll(Arrays.asList(names));
    
    String[] removeNames = {"Sonny","Huckle","Berry"};
    List<String> removeNameList = new ArrayList<>();

    //Create a List from an Array
    removeNameList.addAll(Arrays.asList(removeNames));

以下方法接受兩個 Collection 物件,並執行刪除 removeNameList 中與 nameList 中的元素匹配的元素的魔力。

private static void removeNames(Collection<String> collection1, Collection<String> collection2) {
      //get Iterator.
    Iterator<String> iterator = collection1.iterator();
    
    //Loop while collection has items
    while(iterator.hasNext()){
        if (collection2.contains(iterator.next()))
            iterator.remove(); //remove the current Name or Item
    }
}

呼叫方法並傳入 nameListremoveNameListas 跟隨 removeNames(nameList,removeNameList);
將產生以下輸出:

刪除名字之前的陣列列表: James Smith Sonny Huckle Berry Finn Allan
Array List 刪除名字後: James Smith Finn Allan

對集合的簡單巧妙使用可能會派上用場刪除列表中的重複元素。