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中。