Java ArrayList retainAll()方法
ArrayList 的 retainAll() 方法用于移除数组列表中不包含在指定集合中的所有元素,或者保留当前ArrayList实例中与作为该方法参数传递的集合列表中所有元素相匹配的所有匹配元素。
语法
public boolean retainAll(Collection C)
Java
参数: C是包含要保留在列表中的元素的集合。
返回值: 该方法返回一个布尔值,如果列表由于调用而发生了任何变化,则为true,否则为false。
异常
- ClassCastException。如果这个ArrayList的一个元素的类别与Passed集合不兼容。这是可选的。
- NullPointerException。如果列表中包含一个空元素,而传递的集合不允许空元素,或者指定的集合为空。这也是可选的。
下面的程序用来说明Java.util.ArrayList.retainAll()方法:
程序1: 将ArrayList集合作为参数传递给方法。
// Java code to illustrate retainAll() method
import java.util.ArrayList;
public class GFG {
public static void main(String[] args)
{
// Creating an empty array list
ArrayList<String> bags = new ArrayList<String>();
// Add values in the bags list.
bags.add("pen");
bags.add("pencil");
bags.add("paper");
// Creating another array list
ArrayList<String> boxes = new ArrayList<String>();
// Add values in the boxes list.
boxes.add("pen");
boxes.add("paper");
boxes.add("books");
boxes.add("rubber");
// Before Applying method print both lists
System.out.println("Bags Contains :" + bags);
System.out.println("Boxes Contains :" + boxes);
// Apply retainAll() method to boxes passing bags as parameter
boxes.retainAll(bags);
// Displaying both the lists after operation
System.out.println("\nAfter Applying retainAll()"+
" method to Boxes\n");
System.out.println("Bags Contains :" + bags);
System.out.println("Boxes Contains :" + boxes);
}
}
Java
输出。
Bags Contains :[pen, pencil, paper]
Boxes Contains :[pen, paper, books, rubber]
After Applying retainAll() method to Boxes
Bags Contains :[pen, pencil, paper]
Boxes Contains :[pen, paper]
Java
程序2: 将不同于ArrayList的集合作为参数传递给方法。
// Program Demonstrate retainAll() method With
// Collection different then ArrayList as a parameter of the method
import java.util.*;
public class GFG {
public static void main(String[] args)
{
// Creating an empty array list
HashSet<String> bags = new HashSet<String>();
// Add values in the bags Set.
bags.add("pen");
bags.add("ink");
bags.add("paper");
// Creating another empty array list
ArrayList<String> boxes = new ArrayList<String>();
// Add values in the boxes list.
boxes.add("pen");
boxes.add("paper");
boxes.add("books");
boxes.add("rubber");
boxes.add("ink");
// Before Applying method print both list and set.
System.out.println("Bags Contains :" + bags);
System.out.println("Boxes Contains :" + boxes);
// Apply retainAll() method to boxes passing bags as parameter
boxes.retainAll(bags);
// Displaying both the lists after operation
System.out.println("\nAfter Applying retainAll()" +
" method to Boxes\n");
System.out.println("Bags Contains :" + bags);
System.out.println("Boxes Contains :" + boxes);
}
}
Java
输出。
Bags Contains :[paper, ink, pen]
Boxes Contains :[pen, paper, books, rubber, ink]
After Applying retainAll() method to Boxes
Bags Contains :[paper, ink, pen]
Boxes Contains :[pen, paper, ink]
Java
程序3: 说明 retainAll()方法抛出的错误
// Program to illustrate error thrown by retainAll() method
import java.util.*;
public class GFG {
public static void main(String[] args)
{
// Creating an empty array list
ArrayList<Integer> list1 = null;
/// Creating another empty array list
ArrayList<String> list2 = new ArrayList<String>();
// Add values in the list2 list.
list2.add("pen");
list2.add("paper");
list2.add("books");
list2.add("rubber");
// Before Applying method print both lists
System.out.println("list1 Contains :" + list1);
System.out.println("list2 Contains :" + list2);
// Apply retainAll() method to list2 passing list1 as parameter
list2.retainAll(list1);
// Displaying both the lists after operation
System.out.println("\nAfter Applying retainAll()"+
" method to list2\n");
System.out.println("list1 Contains :" + list1);
System.out.println("list2 Contains :" + list2);
}
}
Java
输出。
list1 Contains :null
list2 Contains :[pen, paper, books, rubber]
Java
运行时错误
Exception in thread "main" java.lang.NullPointerException
at java.util.Objects.requireNonNull(Objects.java:203)
at java.util.ArrayList.retainAll(ArrayList.java:714)
at GFG.main(GFG.java:26)
Java
参考资料:https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#retainAll(java.util.Collection)