使用 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
對集合的簡單巧妙使用可能會派上用場刪除列表中的重複元素。