Java ArrayList retainAll()方法只保留既存在ArrayList中,也存在于指定集合中的那些元素。
并且,沒(méi)有出現(xiàn)在指定集合中的所有元素都從arraylist中刪除。
retainAll()方法的語(yǔ)法為:
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) { //創(chuàng)建 ArrayList ArrayList<String> languages1 = new ArrayList<>(); //添加元素到 ArrayList languages1.add("JavaScript"); languages1.add("Python"); languages1.add("Java"); System.out.println("ArrayList 1: " + languages1); //創(chuàng)建另一個(gè) 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); } }
輸出結(jié)果
ArrayList 1: [JavaScript, Python, Java] ArrayList 2: [English, Java, Python] 公共元素: [Python, Java]
在上面的示例中,我們創(chuàng)建了兩個(gè)名為languages1和languages2的ArrayList。注意這一行,
languages1.retainAll(languages2);
在這里,我們將arraylist languages2作為參數(shù)傳遞給retainAll()方法。該方法從languages1中刪除沒(méi)有出現(xiàn)在languages2中的所有元素。因此,只保留公共元素。
import java.util.ArrayList; import java.util.HashSet; class Main { public static void main(String[] args) { //創(chuàng)建 ArrayList ArrayList<Integer> numbers = new ArrayList<>(); //添加元素到 ArrayList numbers.add(1); numbers.add(2); numbers.add(3); System.out.println("ArrayList: " + numbers); //創(chuàng)建一個(gè) 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); } }
輸出結(jié)果
ArrayList: [1, 2, 3] HashSet: [2, 3, 5] 公共元素: [2, 3]
在上面的示例中,我們創(chuàng)建了一個(gè)名為numbers的arraylist和一個(gè)名為primeNumbers的哈希集合。注意這一行,
numbers.retainAll(primeNumbers);
在此,retainAll()方法會(huì)刪除numbers中,不存在于primeNumbers中的所有那些元素。并且,僅保留公共元素。因此,2和3保留在arraylist numbers中。