Collection.retainAll()

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

定义

boolean retainAll​(Collection<?> c)

参数

参数类型参数名称参数描述
Collectionc包含了想要保留的元素的集合
类型参数E集合元素的类型

返回值

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

抛出的异常

ClassCastException 如果集合中某个或多个元素的类型与指定的集合不兼容

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

UnsupportedOperationException 如果集合不支持 retainAll 操作

示例

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

package com.yi21.collection;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Set;

public class Yi21CollectionRetainAll {

    public static void main(String[] args) {
        

        ArrayList<String> list = new ArrayList<>();
        list.addAll(List.of("Hello", "World", "21yi", "World", "Java"));
        System.out.println("对象 list 是否是一个集合? " + (list instanceof Collection));
        
        Set<String> set = Set.of("21yi", "Java");
        System.out.println("对象 set 是否是一个集合? " + (list instanceof Collection));

        System.out.println("保留 list 中仅在 set 中出现的元素? " + list.retainAll(set));
        System.out.println("list 中剩余的元素:");
        list.forEach(System.out::println);

    }

}

执行结果为 :

对象 list 是否是一个集合? true
对象 set 是否是一个集合? true
保留 list 中仅在 set 中出现的元素? true
list 中剩余的元素:
21yi
Java