Removing matching items from Lists using Iterator.
suggest changeAbove I noticed an example to remove items from a List within a Loop and I thought of another example that may come in handy this time using the Iterator
interface. This is a demonstration of a trick that might come in handy when dealing with duplicate items in lists that you want to get rid of.
Note: This is only adding on to the Removing items from a List within a loop example:
So let’s define our lists as usual
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));
The following method takes in two Collection objects and performs the magic of removing the elements in our removeNameList
that match with elements in 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 } }
Calling the method and passing in the nameList
and the removeNameList
as follows removeNames(nameList,removeNameList);
Will produce the following output:
Array List before removing names: James Smith Sonny Huckle Berry Finn Allan Array List after removing names: James Smith Finn Allan
A simple neat use for Collections that may come in handy to remove repeating elements within lists.