ArrayList.retainAll(list) retains all matching objects of input list and removes others .
Returns true if any element is removed based on matching , otherwise false.
ArrayList<String> languages = new ArrayList<String>();
languages.add("Java");
languages.add("PHP");
languages.add("HTML");
languages.add("Python");
languages.add("PhotoShop");
System.out.println(languages); //[Java, PHP, HTML, Python, PhotoShop]
ArrayList<String> front_end = new ArrayList<String>();
front_end.add("HTML");
front_end.add("PhotoShop");
front_end.add("JavaScript");
languages.retainAll(front_end);
System.out.println(languages); //[HTML, PhotoShop]
In above code we created a second lsit front_end, in this list two elements HTML and PhtoShop are matching with elements of our main ArrayList languages. So retainAll() has retained these two matching elements and removed all others from our main list languages.
As we get boolean output, we can use if else to show messages.
public static void main(String[] args) {
ArrayList<String> languages = new ArrayList<String>();
languages.add("Java");
languages.add("PHP");
languages.add("HTML");
languages.add("Python");
languages.add("PhotoShop");
System.out.println(languages); //[Java, PHP, HTML, Python, PhotoShop]
ArrayList<String> front_end = new ArrayList<String>();
front_end.add("HTML");
front_end.add("PhotoShop");
front_end.add("JavaScript");
if(languages.retainAll(front_end)) {
System.out.println("Retained matching Elements only");
}else {
System.out.println("Noting matched or removed ");
}
System.out.println(languages); //[HTML, PhotoShop]
Output
[Java, PHP, HTML, Python, PhotoShop]
Retained matching Elements only
[HTML, PhotoShop]
In above code as we removed two matching element , the output is true. Now change the name of the elements of front_end by changing them like this.