Skip to content

HashSet

About 254 wordsLess than 1 minute

2025-07-02

今天来简单学习一下Set其中一个实现类。

HashSet:基于哈希表实现,具有快速的插入、删除和查找的操作,但是不保证元素的顺序。

public int[] intersection(int[] nums1, int[] nums2) {
    Set<Integer> st = Arrays.stream(nums1).boxed().collect(Collectors.toSet());
    return Arrays.stream(nums2).filter(st::remove).toArray();
}

今天在做算法的时候,遇到这样一段代码,就是求两个数组的交集,在后面用到了set的remove方法。

HashSet定义

public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, Serializable {}

HashSet源码解析

public boolean remove(Object o)

Set的remove方法用于删除Set集合中的指定元素。该方法返回值为boolean类型,如果Set集合中包含参数o指定的对象,则返回true,否则返回false。

这样也就解释了上面的问题,当st::remove返回true时,表示st中存在当前元素,因为filter值为true,所以保存下来了当前值。

public boolean remove(Object o) {
    return this.map.remove(o) == PRESENT;
}

Changelog

7/19/25, 4:20 PM
View All Changelog
  • c089a-Merge branch 'dev1'on

求求了,快滚去学习!!!

求求了求求了,快去学习吧!

【题单】贪心算法

不知道方向的时候,可以多看看书,书会给你指明下一步该干什么,加油!