Java HashSet

news2024/11/18 1:50:42

HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。

HashSet 允许有 null 值。

HashSet 是无序的,即不会记录插入的顺序。

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

HashSet 实现了 Set 接口。

在这里插入图片描述

HashSet 中的元素实际上是对象,一些常见的基本类型可以使用它的包装类。

基本类型对应的包装类表如下:

基本类型引用类型
booleanBoolean
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter

HashSet 类位于 java.util 包中,使用前需要引入它,语法格式如下:

import java.util.HashSet; // 引入 HashSet 类

以下实例我们创建一个 HashSet 对象 sites,用于保存字符串元素:

HashSet<String> sites = new HashSet<String>();

添加元素

HashSet 类提供了很多有用的方法,添加元素可以使用 add() 方法:

实例

// 引入 HashSet 类      
import java.util.HashSet;

public class YxtTest {
    public static void main(String[] args) {
    HashSet<String> sites = new HashSet<String>();
        sites.add("Google");
        sites.add("Yxt");
        sites.add("Taobao");
        sites.add("Zhihu");
        sites.add("Yxt");  // 重复的元素不会被添加
        System.out.println(sites);
    }
}

执行以上代码,输出结果如下:

[Google, Yxt, Zhihu, Taobao]

在上面的实例中,Yxt 被添加了两次,它在集合中也只会出现一次,因为集合中的每个元素都必须是唯一的。

判断元素是否存在

我们可以使用 contains() 方法来判断元素是否存在于集合当中:

实例

// 引入 HashSet 类      
import java.util.HashSet;

public class YxtTest {
    public static void main(String[] args) {
    HashSet<String> sites = new HashSet<String>();
        sites.add("Google");
        sites.add("Yxt");
        sites.add("Taobao");
        sites.add("Zhihu");
        sites.add("Yxt");  // 重复的元素不会被添加
        System.out.println(sites.contains("Taobao"));
    }
}

执行以上代码,输出结果如下:

true

删除元素

我们可以使用 remove() 方法来删除集合中的元素:

实例

// 引入 HashSet 类      
import java.util.HashSet;

public class YxtTest {
    public static void main(String[] args) {
    HashSet<String> sites = new HashSet<String>();
        sites.add("Google");
        sites.add("Yxt");
        sites.add("Taobao");
        sites.add("Zhihu");
        sites.add("Yxt");     // 重复的元素不会被添加
        sites.remove("Taobao");  // 删除元素,删除成功返回 true,否则为 false
        System.out.println(sites);
    }
}

执行以上代码,输出结果如下:

[Google, Yxt, Zhihu]

删除集合中所有元素可以使用 clear 方法:

实例

// 引入 HashSet 类      
import java.util.HashSet;

public class YxtTest {
    public static void main(String[] args) {
    HashSet<String> sites = new HashSet<String>();
        sites.add("Google");
        sites.add("Yxt");
        sites.add("Taobao");
        sites.add("Zhihu");
        sites.add("Yxt");     // 重复的元素不会被添加
        sites.clear();  
        System.out.println(sites);
    }
}

执行以上代码,输出结果如下:

[]

计算大小

如果要计算 HashSet 中的元素数量可以使用 size() 方法:

实例

// 引入 HashSet 类      
import java.util.HashSet;

public class YxtTest {
    public static void main(String[] args) {
    HashSet<String> sites = new HashSet<String>();
        sites.add("Google");
        sites.add("Yxt");
        sites.add("Taobao");
        sites.add("Zhihu");
        sites.add("Yxt");     // 重复的元素不会被添加
        System.out.println(sites.size());  
    }
}

执行以上代码,输出结果如下:

4

迭代 HashSet

可以使用 for-each 来迭代 HashSet 中的元素。

实例

// 引入 HashSet 类      
import java.util.HashSet;

public class YxtTest {
    public static void main(String[] args) {
    HashSet<String> sites = new HashSet<String>();
        sites.add("Google");
        sites.add("Yxt");
        sites.add("Taobao");
        sites.add("Zhihu");
        sites.add("Yxt");     // 重复的元素不会被添加
        for (String i : sites) {
            System.out.println(i);
        }
    }
}

执行以上代码,输出结果如下:

Google
Yxt
Zhihu
Taobao

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/107402.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

流量与技术双重加持,小游戏迎来高速增长周期

2017 年 12 月 28 日&#xff0c;微信小游戏正式上线。“跳一跳”刷爆了微信朋友圈&#xff0c;随后欢乐斗地主、坦克大战、纪念碑谷、拳皇等经典游戏纷纷出现在小游戏平台上。在过去的5年间&#xff0c;各大平台纷纷紧跟微信的步伐&#xff0c;纷纷入局小游戏&#xff0c;当前…

【CSS】速查复习background相关所有属性(上)

前言 background是一种 CSS 简写属性&#xff0c;用于一次性集中定义一个或多个背景属性&#xff0c;其中的属性有以下这些&#xff1a; background-clip background-color background-image background-origin background-size background-attachment background-blend…

window.location.href跳转页面后拿不到cookie

场景 最近在改其他同事写的系统时&#xff0c;我只改了个文案&#xff0c;但是打包部署上去发现其他地方出现了问题。原因可能是因为这个问题被同事修复过但是没有把代码提交&#xff0c;我拉取的时候这个问题还是存在的。最终拿同事之前打的包与我打的最新包对比&#xff0c;…

Java项目:SpringBoot+Mybatis+layui的学生成绩管理系统

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 功能介绍 SpringBoot学生成绩管理系统。主要分老师与学生两个角色。 其中&#xff0c;教师角色包含以下功能&#xff1a; 教师登录,学生信息管理,成绩管…

ETHERCAT从站设计与FOC伺服马达电流环控制

ETHERCAT从站开发方案介绍-含ET9300对比 EtherCAT一般设计要求&#xff08;针对uCESC的方案&#xff09;&#xff1a; 硬件上&#xff1a;主控制器uCESC&#xff08;可选各供应商的EtherCAT从站控制器&#xff09; 操作系统&#xff1a;无特殊要求&#xff0c;根据产品性能决…

利用python在网上接单赚钱,兼职也能月入过万,还不赶紧学起来

我觉得python接单我是最有发言权的&#xff0c;从2013年进入大学&#xff0c;我就是一个不安分的学生&#xff0c;总是想着通过自己的技术来实现财富自由。 我崇拜雷军&#xff0c;我觉得雷布斯不仅技术强&#xff0c;而且很有商业头脑&#xff0c;可是我是个呆呆的瓜皮&#…

小白到底如何学 Python?

小白&#xff1a;我为什么要学习Python, 它能为我带来什么&#xff1f;我能学会吗&#xff1f;…… 为什么学习 Python? 计算机编程语言有很多&#xff0c;在我接触到的语言里面&#xff0c;比如Java, C, C等&#xff0c;Python是最容易上手的一门语言。 只要你会一点英语&…

GitHub 又一可视化低代码神器,诞生了!速度!手慢无!

在此之前&#xff0c;我曾多次与您交谈&#xff0c;在现阶段互联网业务疯狂增长的推动下&#xff0c;低代码编程被赋予了新的使命和义务&#xff0c;即帮助开发人员快速构建一个可以在早期以较低成本投入市场的应用程序。 那么&#xff0c;有没有一个成熟的低代码工具是开源的、…

使用docker快速部署ferry开源工单系统

大家好&#xff0c;我是早九晚十二&#xff0c;目前是做运维相关的工作。写博客是为了积累&#xff0c;希望大家一起进步&#xff01; 我的主页&#xff1a;早九晚十二 开源软件ferry是集工单统计、任务钩子、权限管理、灵活配置流程与模版等等于一身的开源工单系统&#xff0c…

【蓝桥杯】第11届Scratch国赛中级组第6题 -- 3D打印小猫

[导读]&#xff1a;蓝桥杯大赛是工业和信息化部人才交流中心举办的全国性专业信息技术赛事。蓝桥杯大赛首席专家倪光南院士说&#xff1a;“蓝桥杯以考促学&#xff0c;塑造了领跑全国的人才培养选拨模式&#xff0c;并获得了行业的深度认可。” 春雷课堂计划推出Scratch蓝桥杯…

Linux网络协议之TCP协议(传输层)

Linux网络协议之TCP协议(传输层) 文章目录Linux网络协议之TCP协议(传输层)1.理解TCP协议2.谈谈可靠性问题3.TCP协议格式4.关于TCP的两个问题5.TCP序号与确认序号6.TCP缓冲区7.TCP窗口大小8.TCP的六个标志位9.确认应答机制(ACK)10.超时重传机制11.连接管理机制11.1 三次握手和四…

LEADTOOLS 入门教程: 使用 H264 视频创建 DICOM 文件 - 控制台 C#

LEADTOOLS是一个综合工具包的集合&#xff0c;用于将识别、文档、医疗、成像和多媒体技术整合到桌面、服务器、平板电脑、网络和移动解决方案中&#xff0c;是一项企业级文档自动化解决方案&#xff0c;有捕捉&#xff0c;OCR&#xff0c;OMR&#xff0c;表单识别和处理&#x…

Android系统之路(初识MTK) ------Android11.0添加Recents一键清除最近任务按钮

Android11.0添加Recents一键清除最近任务按钮 今天因为在复测昨天的一个monkey压测并且还没测完,所以打算记录最近做系统开发的一些心得和经验,也记录一下自己的系统开发历程 修改前效果: 修改后的效果: 后期补上… 需要修改的文件列表(注意:各个版本或平台可能要修改…

Git使用

一、Git介绍 1.1、版本控制 在我们日常生活中&#xff0c;使用微信6.5.3版本&#xff0c;QQ7.4版本&#xff0c;Chrome 43.0.2357.65 版本&#xff0c;表示的都是某些软件使用的版本号。这些软件在开发过程中&#xff0c;版本都是由1不断的变化而来。对于软件公司来说&#x…

用魔法打败魔法!AI识别名人造假视频;OpenAI开源Point-E进军3D打印市场;谷歌CALM算法加速文本生成… | ShowMeAI资讯日报

&#x1f440;日报合辑 | &#x1f3a1;AI应用与工具大全 | &#x1f514;公众号资料下载 | &#x1f369;韩信子 &#x1f4e2; 用魔法打败魔法&#xff01;基于面部、手势和声音识别名人 deepfake 视频 https://www.pnas.org/doi/pdf/10.1073/pnas.2216035119 Deepfake 是 …

模型评估指标

模型评估指标【准度、精度、召回率、F1-score及ROC曲线】总结 参考于李沐的机器学习课程。 通常要使用多个模型综合评价一个模型的好坏。 Accuracy 预测正确的个数 / 样本总个数 sum(y_pred y_label)/y_label.size()Precision 正确地预测为类别 i 的个数 / 预测为 i 的总…

【信管5.1】进度管理规划与活动

进度管理规划与活动进度这个东西&#xff0c;相信在不少老板眼里就是你加班的基础。进度赶不上了怎么办&#xff1f;加班呀&#xff0c;进度赶上了呢&#xff1f;再多做点东西呀&#xff01;反正加班这件事是少不了的&#xff0c;当你学习完我们的项目管理知识之后&#xff0c;…

求词频与逆词频SnowNLP.tf与SnowNLP.idf

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 求词频与逆词频 SnowNLP.tf与SnowNLP.idf 选择题 以下关于python代码表述有误的一项是? from snownlp import SnowNLP myText ([ [python, python], [python, 编程, 编程], [django, py…

Java项目:springboot+vue教室图书馆预约管理系统

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 智慧物联网教室预约系统-后台系统 项目简介&#xff1a; 这是一个前后端分离的教室预约和查看系统项目&#xff0c;能够实现以教室为单位活动的预约和取…

【微服务】Nacos为什么放弃短连接(http)而选择拥抱长连接(gRPC)

目录 一、现状背景 二、场景分析 1、配置 2、服务 三、长连接核心诉求 1、功能性诉求 1.1、客户端 1.2、服务端 2、性能 3、负载均衡 4、连接生命周期 4.1、心跳保活机制 4.2、需要什么 四、长连接选型对比 五、基于长链接的⼀致性模型 1.、配置⼀致性模型 1.…