Java ArrayList retainAll()方法只保留既存在ArrayList中,也存在于指定集合中的那些元素。
并且,没有出现在指定集合中的所有元素都从arraylist中删除。
retainAll()方法的语法为:
arraylist.retainAll(Collection c);
collection- 只有存在于集合中的元素才保留在arraylist中。
如果从arraylist中删除元素,则返回true
如果arraylist中存在的元素类与指定集合中的元素类不兼容,则抛出ClassCastException异常
如果arraylist包含null元素,且指定的集合不允许null元素,则抛出NullPointerException
import java.util.ArrayList; class Main { public static void main(String[] args) { //创建 ArrayList ArrayList<String> languages1 = new ArrayList<>(); //添加元素到 ArrayList languages1.add("JavaScript"); languages1.add("Python"); languages1.add("Java"); System.out.println("ArrayList 1: " + languages1); //创建另一个 ArrayList ArrayList<String> languages2 = new ArrayList<>(); //添加元素到 ArrayList languages2.add("English"); languages2.add("Java"); languages2.add("Python"); System.out.println("ArrayList 2: " + languages2); //保留公共元素 languages1.retainAll(languages2); System.out.println("公共元素: " + languages1); } }
输出结果
ArrayList 1: [JavaScript, Python, Java] ArrayList 2: [English, Java, Python] 公共元素: [Python, Java]
在上面的示例中,我们创建了两个名为languages1和languages2的ArrayList。注意这一行,
languages1.retainAll(languages2);
在这里,我们将arraylist languages2作为参数传递给retainAll()方法。该方法从languages1中删除没有出现在languages2中的所有元素。因此,只保留公共元素。
import java.util.ArrayList; import java.util.HashSet; class Main { public static void main(String[] args) { //创建 ArrayList ArrayList<Integer> numbers = new ArrayList<>(); //添加元素到 ArrayList numbers.add(1); numbers.add(2); numbers.add(3); System.out.println("ArrayList: " + numbers); //创建一个 HashSet HashSet<Integer> primeNumbers = new HashSet<>(); //添加元素到 HashSet primeNumbers.add(2); primeNumbers.add(3); primeNumbers.add(5); System.out.println("HashSet: " + primeNumbers); //在ArrayList中保留公共元素 numbers.retainAll(primeNumbers); System.out.println("公共元素: " + numbers); } }
输出结果
ArrayList: [1, 2, 3] HashSet: [2, 3, 5] 公共元素: [2, 3]
在上面的示例中,我们创建了一个名为numbers的arraylist和一个名为primeNumbers的哈希集合。注意这一行,
numbers.retainAll(primeNumbers);
在此,retainAll()方法会删除numbers中,不存在于primeNumbers中的所有那些元素。并且,仅保留公共元素。因此,2和3保留在arraylist numbers中。