ArrayList retainAll() 方法示例

位置:首页>文章>详情   分类: Java教程 > 编程技术   阅读(277)   2023-06-26 07:54:18

ArrayList retainAll() 仅保留此列表中包含在指定方法参数集合中的元素。其余所有元素都从列表中删除。此方法与 removeAll() 方法完全相反。

1、ArrayList的retainAll()方法

在内部,retainAll() 方法遍历 arraylist 的所有元素。对于每个元素,它将元素传递给参数集合的 contains() 方法。

如果在参数集合中找不到元素,它会重新排列索引。如果找到元素,它会将元素保留在后备数组中。

public boolean retainAll(Collection<?> c) {
    Objects.requireNonNull(c);
    return batchRemove(c, true);
}

private boolean batchRemove(Collection<?> c, boolean complement) {
    final Object[] elementData = this.elementData;
    int r = 0, w = 0;
    boolean modified = false;
    try {
        for (; r < size; r++)
            if (c.contains(elementData[r]) == complement)
                elementData[w++] = elementData[r];
    } finally {
        // Preserve behavioral compatibility with AbstractCollection,
        // even if c.contains() throws.
        if (r != size) {
            System.arraycopy(elementData, r,
                             elementData, w,
                             size - r);
            w += size - r;
        }
        if (w != size) {
            // clear to let GC do its work
            for (int i = w; i < size; i++)
                elementData[i] = null;
            modCount += size - w;
            size = w;
            modified = true;
        }
    }
    return modified;
}

方法参数 – 包含要从此列表中保留的元素的集合。
方法返回true 如果此列表因此更改
方法抛出ClassCastException 如果此列表的元素类与指定集合不兼容。如果此列表包含空元素并且指定的集合不允许空元素,它也可能抛出 NullPointerException

2. ArrayList retainAll()例子

Java 程序使用 retainAll() 方法保留列表中存在于指定参数集合中的所有元素。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;

public class ArrayListExample 
{
    public static void main(String[] args) throws CloneNotSupportedException 
    {
        ArrayList<String> alphabets = new ArrayList<>(Arrays.asList("A", "B", "A", "D", "A"));
        
        System.out.println(alphabets);
        
        alphabets.retainAll(Collections.singleton("A"));
        
        System.out.println(alphabets);
    }
}

程序输出。

[A, B, A, D, A]
[A, A, A]

以上就是 Java 中的 ArrayList retainAll() 方法

快乐学习!!

更多参考:

Java ArrayList 指南
ArrayList Java 文档

标签2: Java ArrayList
地址:https://www.cundage.com/article/arraylist-retainall-example.html

相关阅读

ArrayList ensureCapacity() 方法增加了给定 ArrayList 实例的容量,如果有必要,以确保它至少可以容纳方法参数指定的项目数 &lt;代码&gtl;最小容量。 当 ...
ArrayList clear() 方法用于从列表中删除所有元素。此调用返回后列表将为空。 1. ArrayList clear() 语法 clear() 方法做的事情很简单。它迭代 array...
通过示例了解在 Java 中将 ArrayList 转换为字符串数组的不同方法。 1.将arraylist转换为数组——List.toArray() 这是将包含字符串值的数组列表转换为字符串数组...
了解如何获取 ArrayList 中最后一次出现的元素的索引。我们将使用 ArrayList.lastIndexOf() 方法来获取最后一个索引。 1. ArrayList.lastIndexO...
ArrayList.remove(int index) 方法从 ArrayList 中删除元素。 Remove 方法重载。 ArrayList.remove(E element) – 删除指定索...
通过易于理解的示例,学习如何在 Java 中将 Vector 转换为 ArrayList,反之亦然。 1. 将 Vector 转换为 ArrayList 要将包含对象的向量转换为包含相似对象的 ...
了解如何获取现有 ArrayList 的子列表。我们将使用 ArrayList.subList() 方法来获取 arraylist 对象的子列表。 1.ArrayList.subList()方法...
ArrayList add() 方法 用于在列表中添加一个元素。我们可以在 arraylist 中添加任何类型的元素,但是为了让程序以更可预测的方式运行,我们应该只在任何 goven 列表实例中...
在 Java 中,ArrayList 类默认是可序列化的。它本质上意味着我们不需要显式实现 Serializable 接口来序列化 ArrayList。 我们可以直接使用ObjectOutput...
通过示例学习在 Java 中将 LinkedList 转换为 ArrayList。我们还将学习如何在 Java 中将数组列表转换为链表。 1.将LinkedList转换为ArrayList 要将...