天天看点

Java HashSet(基础详解)一、什么是HashSet二、HashSet的框架图三、代码案例演示:

HashSet

  • 一、什么是HashSet
  • 二、HashSet的框架图
  • 三、代码案例演示:

一、什么是HashSet

Set集合常用的如:HashSet、TreeSet。HashSet是Set集合的典型实现,HashSet按照Hash算法来存储集合中的元素,存在以下特点:

  • HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。
  • HashSet 允许有 null 值。
  • HashSet 是无序的,即不会记录插入的顺序。
  • HashSet 实现了 Set 接口。

HashSet 不是线程安全的, 如果多个线程尝试同时修改 HashSet,则最终结果是不确定的。 您必须在多线程访问时显式同步对 HashSet 的并发访问。

二、HashSet的框架图

Java 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的方法。

Java HashSet(基础详解)一、什么是HashSet二、HashSet的框架图三、代码案例演示:

继续阅读