HashSet
- 一、什么是HashSet
- 二、HashSet的框架图
- 三、代码案例演示:
一、什么是HashSet
Set集合常用的如:HashSet、TreeSet。HashSet是Set集合的典型实现,HashSet按照Hash算法来存储集合中的元素,存在以下特点:
- HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。
- HashSet 允许有 null 值。
- HashSet 是无序的,即不会记录插入的顺序。
- HashSet 实现了 Set 接口。
HashSet 不是线程安全的, 如果多个线程尝试同时修改 HashSet,则最终结果是不确定的。 您必须在多线程访问时显式同步对 HashSet 的并发访问。
二、HashSet的框架图
由图可以做到
HashSet实现Set 的接口
HashSet 中的元素实际上是对象,一些常见的基本类型可以使用它的包装类。
基本类型对应的包装类表如下:
基本类型 | 引用类型 |
---|---|
boolean | Boolean |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
三、代码案例演示:
import java.util.HashSet;
/**
* @Description: HashSet的案例演示$
* @Author: dyq
* @Date: 2021年2月4日$
*/
public class HashSetTest {
public static void main(String[] args) {
//初始化一个HashSet
HashSet<String> seit = new HashSet<>();
//添加元素可以使用 add() 方法
seit.add("张三");
seit.add("李四");
seit.add("李四"); //李四 被添加了两次,它在集合中也只会出现一次,因为集合中的每个元素都必须是唯一的
seit.add("王五");
seit.add("刘六");
seit.add("黄七");
System.out.println(seit);
//使用 contains() 方法来判断元素是否存在于集合当中
boolean a = seit.contains("刘六");
System.out.println("刘六是否在集合里:" + a);
boolean b = seit.remove("李四"); // 删除元素,删除成功返回 true,否则为 false
System.out.println("删除李四是否成功"+b +",集合为:"+seit);
//计算 HashSet 中的元素数量可以使用 size() 方法
int c = seit.size();
System.out.println("集合数量为:"+c);
// for-each 来迭代 HashSet 中的元素
System.out.println("for-each 来迭代 HashSet:");
for (String i : seit) {
System.out.println(i);
}
//删除集合中所有元素可以使用 clear 方法
seit.clear();
System.out.println("删除后集合为:"+seit); //删除后查看集合还有没有元素
}
}
结果:
[李四, 张三, 王五, 黄七, 刘六]
刘六是否在集合里:true
删除李四是否成功true,集合为:[张三, 王五, 黄七, 刘六]
集合数量为:4
for-each 来迭代 HashSet:
张三
王五
黄七
刘六
删除后集合为:[]
其实HashSet就是基于Map方法来实现,我们可以看看他们的源码,本质就是调用map的方法。