1. HashSet 简介
- HashSet实现了Set接口
- HashSet实际上是HashMap,看下源码
public HashSet() {
map = new HashMap<>();
}
- 可以存放
null值,但是只能有一个null - HashSet不保证元素是有序的,取决于
hash后,再确定索引的结果。(即:不保证存放元素的顺序和取出顺序一致) - 不能有重复元素或对象
- 举例:
// 创建 HashSet 对象
Set<String> set = new HashSet<>();
// 添加元素
set.add("Apple");
set.add("Banana");
set.add("Orange");
set.add("Apple"); // 尝试添加重复元素,但不会成功
// 输出 HashSet
System.out.println(set); // 输出可能为 [Apple, Banana, Orange],具体顺序不定
// 检查集合中是否包含某个元素
if (set.contains("Banana")) {
System.out.println("Set contains Banana");
}
// 删除元素
set.remove("Banana");
// 输出更新后的 HashSet
System.out.println(set); // 输出可能为 [Apple, Orange]
- HashMap 与 HashSet 的区别:
1、存储类型:HashMap 存储键值对 (key-value pairs),而 HashSet 只存储单个值。 2、接口实现:HashMap 实现了 Map 接口,而 HashSet 实现了 Set 接口。 3、重复性:HashMap 中的键不允许重复,而值可以重复;HashSet 中的所有元素都不允许重复。 4、null 支持:HashMap 允许一个 null 键和多个 null 值;HashSet 允许一个 null 元素。 5、访问方式:在 HashMap 中可以通过键来获取值,而在 HashSet 中只能遍历整个集合来查找元素。