使用 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

对集合的简单巧妙使用可能会派上用场删除列表中的重复元素。