📌  相关文章
📜  Java中的 LinkedHashSet retainAll() 方法与示例(1)

📅  最后修改于: 2023-12-03 14:42:48.572000             🧑  作者: Mango

Java中的 LinkedHashSet retainAll() 方法与示例

LinkedHashSet 简介

LinkedHashSet 是 Java 中一种可以维护元素插入顺序的哈希表,其实现方式类似 HashSet,但是同时使用了链表维护元素的插入顺序。因此,在迭代时,LinkedHashSet 按插入顺序返回元素。

retainAll() 方法

retainAll() 方法是 Set 接口的一个方法,用于计算此集合与特定集合的交集,即仅保留此集合和特定集合中共有的元素。

本文将介绍 LinkedHashSet 中的 retainAll() 方法,讲解其使用方式以及示例代码。

用法

retainAll() 方法的使用方式如下:

boolean retainAll(Collection<?> c)

该方法会保留包含在给定集合 c 中的集合元素,同时删除此 set 中的所有其他元素。

具体来说,以下是执行 retainAll() 方法的步骤:

  1. 用给定集合 c 创建一个临时集合 tempSet;
  2. 遍历此集合,如果其元素不在临时集合中,就删除;
  3. 返回此 set 是否更改了原集合。
示例

我们以 LinkedHashSetExample 类为例,展示 LinkedHashSet retainAll() 方法的运用。

这里我们先定义一个 LinkedHashSet 对象 set1,并向其中添加连续的 10 个整型数字。然后,我们再定义另一个 LinkedHashSet 对象 set2,并向其中添加数字 5 到 15 之间的数字。

接下来,我们执行 set1.retainAll(set2) 方法,来计算两个集合的交集。

示例代码如下:

import java.util.LinkedHashSet;

public class LinkedHashSetExample {
    public static void main(String[] args) {
        LinkedHashSet<Integer> set1 = new LinkedHashSet<>();
        for (int i = 1; i <= 10; i++) {
            set1.add(i);
        }
        System.out.println("Set 1: " + set1);

        LinkedHashSet<Integer> set2 = new LinkedHashSet<>();
        for (int i = 5; i <= 15; i++) {
            set2.add(i);
        }
        System.out.println("Set 2: " + set2);

        set1.retainAll(set2);
        System.out.println("Intersection of Set 1 and Set 2: " + set1);
    }
}

输出结果:

Set 1: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Set 2: [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
Intersection of Set 1 and Set 2: [5, 6, 7, 8, 9, 10]

示例代码中,我们可以看到 set1 和 set2 的内容,以及它们的交集。

在 set1.retainAll(set2) 方法执行后,set1 中只剩下交集部分,即数字 5 到 10,与 set2 的内容一致。

总结

本文介绍了 LinkedHashSet retainAll() 方法的使用方式,以及示例代码。retainAll() 方法可以方便地计算集合之间的交集,并返回集合是否更改的状态。