Java ArrayList.retainAll() 方法及代码示例

仅保留数组列表中包含在指定合集中的元素, 换句话说就是不包含在指定合集中的元素都将被删除.

定义

public boolean retainAll​(Collection<?> c)

参数

参数类型参数名称参数描述
Collection<?>c包含了想要保留的元素的集合
类型参数E数组列表包含的元素的类型

返回值

如果调用了此方法后数组列表发生了变化则返回 true, 否则返回 false.

抛出的异常

ClassCastException 如果列表中某个元素的类与指定的集合不兼容

NullPointerException 如果该列表包含一个 null 元素,而指定的集合不允许包含 null 元素,或者指定的集合为 null

说明

本方法方法由 Collection 接口的 retainAll() 方法指派

本方法方法由 List 接口的 retainAll() 方法指派

本方法重写了继承自 AbstractCollection 类的 retainAll() 方法

示例

从数组列表中仅保留包含在指定合集中的元素的示例

package com.yi21.arraylist;

import java.util.ArrayList;
import java.util.Set;

public class Yi21ArraysListRetainAll {

    public static void main(String[] args) {
        
        ArrayList<String> list = new ArrayList<>();
        list.add("Hello");
        list.add("World");
        list.add("World");
        list.add("21yi");
        
        System.out.println("删除有元素合集, 是否变化? " + list.retainAll(Set.of("World")));
        System.out.println("剩余的元素个数: " + list.size());
        System.out.println("删除无元素合集, 是否变化? " + list.retainAll(Set.of()));
        System.out.println("剩余的元素个数: " + list.size());

    }

}

执行结果为 :

删除有元素合集, 是否变化? true
剩余的元素个数: 2
删除无元素合集, 是否变化? true
剩余的元素个数: 0