retainall java

retainall java

retainall java

一、概述

在Java集合框架中,retainAll()方法用于求两个集合的交集。它的作用是保留当前集合中与指定集合中相同的元素,删除其他元素。本文将详细介绍retainAll()方法的使用、源码分析以及示例代码的运行结果。

二、用法

retainAll()方法是Java集合框架中提供的一种用于求两个集合交集的方法。它可以被ListSetQueue等集合类使用。方法的定义如下:

boolean retainAll(Collection<?> c)

该方法将会保留当前集合中与指定集合c相同的元素,删除其他元素,并返回一个boolean值表示是否修改了当前集合。

三、源码分析

retainAll()方法的源码中,我们可以看到它的实现原理。以下是retainAll()方法的源码片段:

public boolean retainAll(Collection<?> c) {
    Objects.requireNonNull(c);
    boolean modified = false;
    Iterator<E> it = iterator();
    while (it.hasNext()) {
        if (!c.contains(it.next())) {
            it.remove();
            modified = true;
        }
    }
    return modified;
}

在源码中,首先进行了非空判断,保证参数c不为null。然后通过迭代器Iterator遍历当前集合,判断当前元素是否存在于指定集合c中。如果不存在,则通过迭代器的remove()方法将当前元素从集合中删除,并将modified标志置为true,表示集合已经被修改。最后返回modified,表示是否修改了当前集合。

四、示例代码

1. 使用ArrayList

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class RetainAllExample1 {

    public static void main(String[] args) {
        List<Integer> list1 = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
        List<Integer> list2 = new ArrayList<>(Arrays.asList(2, 4, 6));

        boolean modified = list1.retainAll(list2);

        System.out.println("Modified: " + modified);
        System.out.println("List1: " + list1);
    }
}

运行结果:

Modified: true
List1: [2, 4]

在上述示例中,我们创建了两个ArrayList对象list1list2,分别包含了一些整数元素。然后调用list1.retainAll(list2)方法,求两个集合的交集。由于list1中只有2和4与list2中的元素相同,因此其他元素被删除,集合list1被修改。最后打印出修改标志modified的值和修改后的list1

2. 使用HashSet

import java.util.HashSet;
import java.util.Set;

public class RetainAllExample2 {

    public static void main(String[] args) {
        Set<String> set1 = new HashSet<>();
        set1.add("apple");
        set1.add("banana");
        set1.add("orange");

        Set<String> set2 = new HashSet<>();
        set2.add("banana");
        set2.add("grape");

        boolean modified = set1.retainAll(set2);

        System.out.println("Modified: " + modified);
        System.out.println("Set1: " + set1);
    }
}

运行结果:

Modified: true
Set1: [banana]

在上述示例中,我们创建了两个HashSet对象set1set2,分别包含了一些字符串元素。然后调用set1.retainAll(set2)方法,求两个集合的交集。由于set1中只有”banana”与set2中的元素相同,因此其他元素被删除,集合set1被修改。最后打印出修改标志modified的值和修改后的set1

五、总结

通过本文,我们了解了retainAll()方法的使用和源码原理。它是Java集合框架中非常有用的方法,用于求两个集合的交集。我们可以使用retainAll()方法来操作ListSet等集合,保留与指定集合相同的元素。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程