I removed specific element from list of list using for loop and making deepCopy. Is there any other way to remove specific element from List of List?
import java.util.ArrayList;
import java.util.List;
public class HelloWorld{
public static void main(String []args){
List<ArrayList<String>> listA = new ArrayList<ArrayList<String>>();
ArrayList<String> list1 = new ArrayList<String>();
list1.add("cucumber");
ArrayList<String> list2 = new ArrayList<String>();
list2.add("carrot");
ArrayList<String> list3 = new ArrayList<String>();
list3.add("spinach");
ArrayList<String> list4 = new ArrayList<String>();
list4.add("kale");
listA.add(list1);
listA.add(list2);
listA.add(list3);
listA.add(list4);
System.out.println("Original-->"+listA);
List<List<String>> deepCopyOfListA = new ArrayList<List<String>>(listA);
System.out.println("Deepcopy -->"+deepCopyOfListA);
for (List<String> item : deepCopyOfListA) {
if (item.contains("kale") || item.contains("cucumber")){
listA.remove(item);
}
}
System.out.println("Final-->"+listA);
}
}
From the answers below, this seemed the most convenient. Using Iterator to remove the desired elements with if condition. Tested and it works great. Thanks everyone for your input.
Iterator<ArrayList<String>> itr = listA.iterator();
while(itr.hasNext()) {
List<String> item = itr.next();
if ((item.contains("cucumber") || item.contains("kale"))) {
itr.remove();
}