首页 > 其他分享 >HashSet 的基本使用

HashSet 的基本使用

时间:2023-05-17 16:55:05浏览次数:40  
标签:基本 set HashSet 元素 添加 哈希 使用 println

 HashSet 是 Java 中的集合类之一,它实现了 Set 接口,并基于哈希表实现。它不允许集合中存在重复元素,因此可以用来存储一组唯一的对象。

在 HashSet 中,每个元素都对应着一个唯一的键值,这个键值是通过元素的 hashCode() 方法计算出来的。具体来说,HashSet 通过将元素的 hashCode() 方法返回值作为索引来存储元素,因此可以快速地查找和访问元素。

当我们向 HashSet 中添加元素时,它会先计算元素的 hashCode() 值,然后将元素存储到相应的索引位置上。如果在该位置上已经存在一个元素,则会比较新元素与已有元素的 equals() 方法返回值是否相等,如果相等则认为新元素已经存在于集合中,不会被重复添加;否则会将新元素添加到集合中。

HashSet 的优点是可以快速地查找和访问元素,时间复杂度为 O(1);缺点是 HashSet 是无序的,不能保证元素的顺序。此外,由于 HashSet 是基于哈希表实现的,因此它的性能与哈希函数的质量密切相关,如果哈希函数的质量不高,可能会导致元素的分布不均匀,进而影响 HashSet 的性能。

 

HashSet的基本使用如下:

 

import java.util.HashSet;

public class HashSetExample {
    public static void main(String[] args) {
        // 创建一个HashSet对象
        HashSet<String> set = new HashSet<>();

        // 添加元素
        set.add("apple");
        set.add("banana");
        set.add("orange");

        // 判断元素是否存在
        System.out.println(set.contains("apple")); // true
        System.out.println(set.contains("pear")); // false

        // 删除元素
        set.remove("banana");

        // 遍历元素
        for (String fruit : set) {
            System.out.println(fruit);
        }

        // 获取元素个数
        System.out.println(set.size()); // 2
    }
}

 

在上面的代码中,我们首先创建了一个HashSet对象set,并向其中添加了三个元素。然后,我们使用contains方法判断元素是否存在,使用remove方法删除元素,使用for-each循环遍历元素,使用size方法获取元素个数。最终,输出结果为:

true
false
apple
orange
2

 

可以看到,HashSet可以很方便地实现元素的添加、删除、判断、遍历等操作。

标签:基本,set,HashSet,元素,添加,哈希,使用,println
From: https://www.cnblogs.com/2324hh/p/17409294.html

相关文章

  • 使用教程 | 基于TSMaster如何实现LIN RBS 剩余总线仿真
    本文导读RBS全称是:residualbussimulation,也就是所谓的剩余总线仿真。主要是基于车载网络数据库,如CAN/LIN/FlexRay/以太网数据库,仿真该网络内部各个节点的通讯行为。本文主要讲解TSMaster中LINRBS的操作流程。本文目录:一、硬件连接准备二、TSMaster软件LINRBS操作流程1.......
  • shell脚本使用ssh远程执行命令通过密码的方式登录
    shell脚本使用ssh远程执行命令通过密码的方式登录sshpass是一个在非交互式ssh会话中自动输入密码的工具。它可以直接在命令行中指定密码,因此可以用于Shell脚本等自动化场景。在RedHat系统中,可以通过epel-release源安装sshpass。epel-release源是ExtraPackagesfor......
  • laravel ServiceProvider 服务提供者使用案例
    1.实例化一个类2.全局注册这个类3.在控制器中使用 publicfunctionregister(){$this->app->singleton('wxminapp',function(){return(newWxServiceProvider)->boot();});}使用注册方法,注册一个服务提供者,wxminapp为服务......
  • Pandas GroupBy 使用教程
    实例1将分组后的字符拼接importpandasaspddf=pd.DataFrame({'user_id':[1,2,1,3,3],'content_id':[1,1,2,2,2],'tag':['cool','nice','clever','clever','not-bad']})df将d......
  • Tensorflow教程(十四) 命令行参数tf.flags的使用
    实例1importtensorflowastfflags=tf.flagsFLAGS=flags.FLAGSflags.DEFINE_integer('data_num',100,"""Flagoftypeinteger""")flags.DEFINE_string('img_path','./img',"""Flagof......
  • Java中可以使用Java AWT和Java Swing库来处理图片
    以下是图片增删改查的示例代码:图片的增加importjava.awt.image.BufferedImage;importjava.io.File;importjavax.imageio.ImageIO;publicclassAddImage{publicstaticvoidmain(String[]args){try{BufferedImageimage=ImageIO.read(newFile(......
  • CST为什么要关闭 GPU 卡的 ECC 模式而开启 TCC 模式?操作使用【详解】
    在使用CST软件之前,我们一般建议大家关闭GPU卡的ECC模式而开启TCC模式。那么,为什么要进行这样一个操作呢?在此之前,给大家科普一下什么是“ECC”和“TTC”。 “ECC” 其实是ErrorCorrectionCode的缩写,是NVIDIA(英伟达) 内自带的错误纠正代码,一般是用来检查和在某些情......
  • 如果微软限制使用Windows系统了,我们该怎么办?
    ​正如中国工程院院士倪光南所说,操作系统的成功与否,关键在于生态系统,需要搭建起完整的产业链上各个主体共生的生态体系。当前我国国产操作系统市场发展很快,相比技术和市场突破,真正需要解决的问题是如何把生态建好。所谓“无生态,不OS”,是否具有完善的生态,是操作系统产业实现可......
  • 前端-Vue语法使用
    ES6做为动态语言,感觉底层开始-基本类型就全引用。做为实例化的变量,也变得像指向指针的指针,可以随时切换指针,从而最终的数据类型也更着切换总的来说概念上会比较别扭。以及灵活导致的不确定性。底层都是对象,从对象的类型来搭建。基本类型\ PrimitivevalueUndefined,Null,Boo......
  • SpringBoot的@Autowired和@Resource使用
    1、区别见:https://blog.csdn.net/xhbzl/article/details/1267658932、使用2.1、注入配置类比如注入config的bean@ConfigurationpublicclassMyThymeLeafConfig{@ResourceprivateApplicationContextapplicationContext;/**自定义的bean*/......