HashSet的无序性和不重复性

简介: 无序性:无序性是指当我们往HashSet集合里添加数据时,其位置是不确定的。Eg:假设只有16个位置当你往容器中添加数据时,其可能在任何位置。表格内数字表示添加顺序:(HashSet底层是数组加链表(jdk7),jdk8中其底层是数组+链表+红黑树,下面以jdk7为例) 2 1 3 4

 无序性:无序性是指当我们往HashSet集合里添加数据时,其位置是不确定的。假设只有16个位置当你往容器中添加数据时,其可能在任何位置。

表格内数字表示添加顺序:(HashSet底层是数组加链表(jdk7),jdk8中其底层是数组+链表+红黑树,下面以jdk7为例)

2 1 3
4
5

不可重复性:当你调用add()方法添加一个数据时,其底层会先通过算法计算出其哈希值,找到添加的位置,接下来:

                       ①:当该位置上没有元素时,直接添加到该位置上,如果存在,再分以下两种情况。

                       ②:当该位置上有元素时(可能是一个,或者以链表形式存在多个),比较他们的哈希值,若不相同,就直接添加。

                       ③:当其位置上有元素且哈希值相同时,调用对象所在类的equals()方法,若返回false,则添加成功,若返回true,则添加失败。

               Eg:jdk7中添加成功后,新元素成为该位置上链表的表头。 jdk8中添加成功后,新元素成为该位置上链表的表尾。

Eg:

@Test
    public void TestHashSet(){
        HashSet s1 = new HashSet();
       //起初new一个HashSet对象,其是长度为0,并未初始化数组长度。
        System.out.println(s1.size());
        //当其进行add()操作时,此时它的容量是16,
        // 当其内部存储量达到当前容量的0.75(HashSet的加载因子)时,扩容,
        // 其每一次扩容为当前的两倍。
        s1.add(123);
        s1.add(5546);
        s1.add(234);
        System.out.println(s1);
        s1.add(123);
        //当其检测到相同的对象时,自动去除。
        System.out.println(s1);
    }

image.gif


相关文章
|
缓存 网络协议 数据库
|
10天前
|
Shell API 开发工具
Claude Code 快速上手指南(新手友好版)
AI编程工具卷疯啦!Claude Code凭借任务驱动+终端原生的特性,成了开发者的效率搭子。本文从安装、登录、切换国产模型到常用命令,手把手带新手快速上手,全程避坑,30分钟独立用起来。
2985 20
|
7天前
|
人工智能 开发工具 iOS开发
Claude Code 新手完全上手指南:安装、国产模型配置与常用命令全解
Claude Code 是一款运行在终端环境中的 AI 编程助手,能够直接在命令行中完成代码生成、项目分析、文件修改、命令执行、Git 管理等开发全流程工作。它最大的特点是**任务驱动、终端原生、轻量高效、多模型兼容**,无需图形界面、不依赖 IDE 插件,能够深度融入开发者日常工作流。
2774 5
|
22天前
|
人工智能 JSON 供应链
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
LucianaiB分享零成本畅用JVS Claw教程(学生认证享7个月使用权),并开源GeoMind项目——将JVS改造为科研与产业地理情报可视化AI助手,支持飞书文档解析、地理编码与腾讯地图可视化,助力产业关系图谱构建。
23565 14
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
|
3天前
|
人工智能 Linux BI
国内用 Claude Code 终于不用翻墙了:一行命令搞定,自动接 DeepSeek
JeecgBoot AI专题研究 一键脚本:Claude Code + JeecgBoot Skills + DeepSeek 全平台接入 一行命令装好 Claude Code + JeecgBoot Skills + DeepSeek 接入,无需翻墙使用 Claude Code,支持 Wind
1721 2
国内用 Claude Code 终于不用翻墙了:一行命令搞定,自动接 DeepSeek
|
9天前
|
人工智能 JSON BI
DeepSeek V4-Pro 接入 Claude Code 完全实战:体验、测试与关键避坑指南
Claude Code 作为当前主流的 AI 编程辅助工具,凭借强大的代码理解、工程执行与自动化能力深受开发者喜爱,但原生模型的使用成本相对较高。为了在保持能力的同时进一步降低开销,不少开发者开始寻找兼容度高、价格更友好的替代模型。DeepSeek V4 系列的发布带来了新的选择,该系列包含 V4-Pro 与 V4-Flash 两款模型,并提供了与 Anthropic 完全兼容的 API 接口,理论上只需简单修改配置,即可让 Claude Code 无缝切换为 DeepSeek 引擎。
2353 3
|
8天前
|
人工智能 安全 开发工具
Claude Code 官方工作原理与使用指南
Claude Code 不是传统代码补全工具,而是 Anthropic 推出的终端 AI 代理,具备代理循环、双驱动架构(模型+工具)、全局项目感知、6 种权限模式等核心能力,本文基于官方文档系统解析其工作原理与高效使用技巧。
1261 0