使用 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
}
}
调用方法并传入 nameList
和 removeNameList
as 跟随 removeNames(nameList,removeNameList);
将产生以下输出:
删除名字之前的数组列表: James Smith Sonny Huckle Berry Finn Allan
Array List 删除名字后: James Smith Finn Allan
对集合的简单巧妙使用可能会派上用场删除列表中的重复元素。