tnblog
首页
视频
资源
登录

HashSet集合概述、特点和哈希值 10

5273人阅读 2022/6/17 18:05 总访问:1684488 评论:0 收藏:0 手机
分类: Java集合

一、HashSet集合概述和特点HashSet集合特点

1、底层数据结构是哈希表

2、不能保证存储和取出的顺序完全一致

3、没有带索引的方法,所以不能使用普通for循环遍历由于是Set集合,所以元素唯一

二、HashSet集合练习

●存储字符串并遍历

  1. public class HashSetDemon1 {
  2.     public static void main(String[] args) {
  3.         HashSet<String> set=new HashSet<>();
  4.         set.add("hello");
  5.         set.add("word");
  6.         set.add("java");
  7.         set.add("java");
  8.         set.add("java");
  9.         //迭代器输出
  10.         Iterator<String> iterator = set.iterator();
  11.         while (iterator.hasNext()){
  12.             System.out.println(iterator.next());
  13.         }
  14.         System.out.println("=========================");
  15.         for (String s : set) {
  16.             System.out.println(s);
  17.         }
  18.     }
  19. }


三、哈希值

1、哈希值(哈希码值)︰是JDK根据对象的地址或者属性值,算出来的int类型的整数

1.1、Object类中有一个方法可以获取对象的哈希值

1.2、public int hashCode()∶根据对象的地址值计算出来的哈希值

2、对象的哈希值特点

如果没有重写hashCode方法,那么是根据对象的地址值计算出的哈希值。

        同一个对象多次调用hashCode()方法返回的哈希值是相同的。
        不同对象的哈希值是不一样的。

如果重写了hashCode方法,一般都是通过对象的属性值计算出哈希值。

        如果不同的对象属性值是一样的,那么计算出来的哈希值也是一样的。

hashCode的用法

2.1如何重写hashCode方法
2.1.1在类里面右键->点击Generate


2.1.2、在该弹窗的第二步一直点下一步就行了


评价

collection 集合概述和使用

1、2、3、案例3.1.1、问:为什么知道removeif的参数是lambda表达式,且是这样写的答:选中removeif(),然后CTRL+B跳转到方法...

Quartz.NET实例动态改变周期调度。misfireCron

Quartz:Java编写的开源的任务调度作业框架 类似Timer之类定时执行的功能,但是更强大Quartz.NET:是把Quartz转成C# NuGet...

.NET Windows服务发布安装卸载监听脚本。服务调试

一、脚本 为方便不用每次都去写安装卸载的脚本1.安装脚本@echooff @echo开始安装【服务】 %SystemRoot%\Microsoft.NET\Fr...

C ??? 问号和2个问号的用法(类型?对象?)

C# ?C# ???:单问号1.定义数据类型可为空。可用于对int,double,bool等无法直接赋值为null的数据类型进行null的赋值如这...

C outref关键字的用法和区别

说说自己对out、ref的认识,面试问到的几率很高哟。out:classProgram { /* *out、ref都是引用传递,传递后使用都会改变...

cVB.net中全角半角转换方法

///&lt;summary&gt; ///转全角的函数(SBCcase) ///&lt;/summary&gt; ///&lt;paramname=&quot;input&quot;&gt;任意字符串...

redis中主从哨兵和集群这三个有什么区别

主从模式:备份数据、负载均衡,一个Master可以有多个Slaves。sentinel(哨兵)发现master挂了后,就会从slave中重新选举一个...

JS监听inputkeydown,有输入法时打字完成后触发事件

在给输入框绑定input或keydown事件时预期效果是有输入法时,输入中文后触发事件,不希望输一个字母就触发一次事件可以用到c...

下划线换行回车空格ASCII码值与对照表

下划线,ASCII码95换行 , ASCII码10回车 , ASCII码13空格 , ASCII码32ASCII码表:Bin(二进制)Oct(八进制)Dec(十进制)Hex(...

docker常用命令删除镜像命令进入容器docker重启命令等

1. docker version查看 Docker 版本信息2. docker info显示 Docker 系统信息,包括镜像,容器数等3. 运行容器第一次使用:d...

多线程Lock锁数据库实现队列

队列其元素以先进先出(Firstin,Firstout,FIFO)的方式来处理的集合。先放入队列中的元素会先读取。队列使用System.Collect...

jsJQuery获取文本的宽高

页面编写:&lt;!DOCTYPEhtml&gt; &lt;html&gt; &lt;head&gt; &lt;metacharset=&quot;UTF-8&quot;/&gt; &lt;title&gt;jQ...

code first执行命令报错,无法将“Enable-Migrations”项识别为 cmdlet函数脚本文件

EF:执行命令报错无法将“Enable-Migrations”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如...

缓存穿透缓存击穿缓存雪崩区别

一、缓存穿透 缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,如发起为id为“-1”的数据或id为特别大不存...

微服务分布式架构项目的一点点想法

分布式与微服务的区别:说一点个人理解分布式: 分散压力。 不同功能块之间的通讯少,还是会有不少代码,每一...
没有个性,不需要签名
排名
4
文章
473
粉丝
3
评论
2
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术