HashSet是基于哈希表实现的无序不重复集合,底层用HashMap存储,增删平均O(1),依赖hashCode()和equals();add()添加成功返回true、已存在返回false;remove()删除指定元素,null可删,自定义类须重写两方法;支持addAll()/removeAll()批量操作及clear()/isEmpty()/contains()等辅助方法。

HashSet 是 Java 中基于哈希表实现的无序、不重复集合,底层用 HashMap 存储(键为元素,值为固定对象 PUBLIC_STATIC_FINAL)。增删操作平均时间复杂度为 O(1),关键依赖元素的 hashCode() 和 equals() 方法。
添加元素:add() 方法
使用 add(E e) 添加元素,成功返回 true;若元素已存在(根据 equals + hashCode 判定),不重复插入,返回 false。
示例:
Set<String> set = new HashSet<>();set.add("apple"); // true
set.add("banana"); // true
set.add("apple"); // false,不重复添加
删除元素:remove() 方法
调用 remove(Object o) 删除指定元素。传入 null 也可(null 的 hash 值为 0,equals 判定也支持)。
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
立即学习“Java免费学习笔记(深入)”;
注意点:
- 必须确保要删的对象与集合中元素满足
equals()成立,且hashCode()一致 - 对于自定义类,务必重写
hashCode()和equals(),否则可能删不掉 - 删除不存在的元素,方法返回
false,不抛异常
set.remove("cherry"); // false
批量增删:addAll() 与 removeAll()
支持集合间操作:
-
addAll(Collection<? extends E> c):把另一个集合所有元素加入当前 set(自动去重) -
removeAll(Collection<?> c):移除当前 set 中所有在参数集合中存在的元素
set.addAll(others); // 合并去重
set.removeAll(others); // 删除匹配项
清空与判空
常用辅助操作:
-
clear():清空全部元素 -
isEmpty():判断是否为空(size == 0) -
contains(Object o):检查是否包含某元素(本质是查找 hash 桶 + 链表/红黑树遍历)

















