HashSet的contains方法

使用HashSet类的containsAll方法判断一个集合是否包含另一个集合中的所有元素 HashSet类提供了丰富的方法来操作集合中的元素,包括判断集合是否包含另一个集合中的所有元素。在本文中,我们将使用HashSet的containsAll方法来判断一个集合是否包含另一个集合中的所有元素。接下来,我们使用containsAll方法来判断第一个集合是否包含第二个集合中的所有元素。通过使用HashSet类的containsAll方法,我们可以轻松判断一个集合是否包含另一个集合中的所有元素。,再次运行代码,将输出"set1包含set2中的所有元素",因为此时。包含元素1、2和3,而。 阅读详情
关于HashSet的发现:
1:HashSet是一个Set,也就是所谓的集合。集合的概念是元素在集合中无序、唯一。无序对于计算机来说没有什么意义,因为计算机总要按照一定的顺序存储对象。唯一是怎么实现的呢?名字上说的已经很清楚了。HashSet,就是通过其中的元素(对象)的hashconde来区分对象是否唯一的。所以,HashSet的对象中着一个集合中对象的hashcode的list,每次执行set.add(obj)的时候,都会取出obj的hashcode与其内部的list进行比较,如果没有与之相等的,就加进set里去,同时把那个obj的hashcode加到list里面去;如果有相等的,就再调用obj的equals方法与各个对象进行比较,如果没有相等的,就加入到set里面去,如果还有相等的,就不执行加入操作。
public Set add(Object obj){
  int code = obj.hashCode();
  if(code not in this.hashcodeList){//如果没有于之相等的hashcode。就将obj加入
   this.valueList.add(obj);
   this.hashcodeList.add(code);
   return true;
  }else{//否则看看是否有与之equals相等的。
   if(code in this.valueList){//有,add失败
    return false;
   }else{//没有,add成功
    this.valueList.add(obj);
    return true;
   }
  }
 }
其实相当于执行了一次contains方法,根据contains方法的返回值决定是否真的add。
 
 
 
也就是说HashSet在确定已经包含某个对象相等的标准是:它们的hashcode相等或者它们的equals方法返回true。
 
郁闷了半天,怎么先比较hashcode呢?
 
总算知道了为什么覆盖了toString()后不覆盖hashcode(),Eclipse会给出警告。原来这两个都和对象的相等比较有关系啊。Object的hashcode就是根据对象的内存地址计算出了,保证不重复。而String的hashcode就不一样了,只要字符串的内容相等(equals返回true),它们的hashcode就是相等的。
 
特别需要注意的是HashSet是有缓存的,第一次contains执行完后会缓存所有的hashcode,以后再调用contains比较的时候使用缓存的hashcode(就是那个list),所以说HashSet最好只用来存储不可变对象,否则contains方法的返回值是不准确的。
 
一下原则要记住:
1:对于不可变类(String、Integer、以及自己定义的不可变类等),要保证equals返回true的时候,它们的hashcode的值相等。
2:对于不可变类,也要尽量满足1。以避免出现上面说的Set比较时出现的问题。
3:覆盖一个类的equals方法的时候,要注意可交换性,要保证a.equals(b)的值一定等于b.equals(a)的数值。
 
 
X3850x6 6241 fireware固件升级 登录联想https://datacentersupport.lenovo.com/cn/zc网站,选择system x,x3850 x6,type选择6241 选择驱动及应用程序,BIOS/UEFI 选择lnvgy_fw_uefi_a9e156a-4.90_anyos_32-64.uxz 文件,点击下载 选择IMM2, 下载lnvgy_fw_imm2_tcoo58b-5.80_anyos_noarch.uxz ps:3837和3839会跳转到ibm网站下载 笔记本直连. 阅读详情

相关推荐

【SigmaStar SSC335系列】空片用Flash_Tool烧写

简介 本文主要讲新拿到的PCBA,板上spi nand flash还是空的,如何在这种情况下烧录固件,这里讲解用官方Flash_Tool烧写的方式。 但只讲一些注意的地方和坑,其它的官方文档里说的比较清楚,不多说。 准备 Flash_Tool烧写软件 编译打包好烧写镜像 串口烧录小板 ----- 这个是个坑,在官方文档里并没有提及,刚开始用的平时调试的USB转串口,怎么都没反应,一度不知烧写软件不对还是硬件有问题,最后通过厂家技术支持才得知,除了专门的Flash_Tool外,还要专门的串口烧录器

老K 4700

Java HashSet contains()方法与示例

HashSet类contains()方法 (HashSet Class contains() method) contains() method is available in java.util package. contains()方法在java.util包中可用。 contains() method is used to check the existence of the given o...

cumubi7552的博客 5665

第1关:STL模板之queue实例一:最少个数

头歌自创答案

xiyunSacire的博客 819

HashSet和ArrayList的contains方法区别

方法都用于检查集合中是否存在某个元素,但它们的实现机制和性能差异很大。方法通过哈希表(HashMap 的 key 部分)查找元素是否存在。方法通过遍历整个列表,逐个调用。方法检查元素是否相等。

qq_60542647的博客 754

电商平台大数据分析指标

一、五大关键数据分析指标 1.1活跃用户量 活跃用户量是一个基本的指标,有 DAU(日活跃用户)、WAU(周活跃用户)和 MAU(月活跃用户)三个层次; 1.2转化 转化是一个非常重要的指标,电商运营需要关注主路径、次路径甚至精细到每一个品类 / SKU 的转化率; 1.3留存 留存要从不同的时间周期上研究,包括次日留存率、3 日、7 日、30 日留存; 1.4复购 复购则要从 3 个角度去看,复购用户量、复购率和复购金额比; 1.5GMV GMV 是最重要的指标,我们的运营最终是围绕这

默主归沙的博客 4819

统信UOS/麒麟ARM桌面版,不联网也能用Docker部署MySQL 5.7(离线部署详解)

本文详细介绍了在统信UOS/银河麒麟ARM桌面版系统中,如何离线部署MySQL 5.7的完整流程。通过Docker技术实现环境隔离和依赖封装,解决了封闭网络环境下的部署难题,包括资源准备、系统配置、容器化部署及安全加固等关键步骤,为政企和科研场景提供实用解决方案。

weixin_30892037的博客 230

HashSet的contains方法比对机制

摘要: HashSet的contains()方法判断元素存在需同时满足哈希值相同和equals()相等两个条件,例如Set<String>存储"hanlpp"时,查询"hanlp"会返回false。而String的contains()是子串匹配,如"hanlpp".contains("hanlp")返回true。关键区别在于:HashSet要求完全匹配,String只需包含子串。示例对比:"abcde&qu

qq_59193001的博客 556

电商数据分析18——电商广告投放的数据分析与优化

在当今的电商行业中,广告投放是提高品牌知名度、吸引潜在客户和增加销售额的关键策略之一。随着市场竞争的加剧,仅仅依靠直观判断和传统方法已经无法满足广告投放的需求。数据分析在这里扮演了至关重要的角色,它可以帮助企业更准确地定位目标受众,评估广告效果,优化广告内容,从而提高广告效率和投资回报率(ROI)。

theskylife的博客 5703

慎用ArrayList的contains方法,使用HashSet的contains方法代替

ArrayList的contains到了十万级别,就基本上很慢了,HashSet到了百万级的数据也特别快,而且是快得特别多。 ArrayList的contains方法与HashSet的contains方法的区别? ​ ArrayList的contains方法会直接判断元素的内存地址是否相同,HashSet的contains方法会先判断元素的hashCode是否相同,如果不同则返回false,如果相同再用equals判断,因此HashSet的contains方法的方法效率会更高。 ArrayList..

qq_49432338的博客 1289

【GlobalMapper精品教程】084:tif(tfw)、jpg(jgw)、png(pgw)的区别与联系

摘要:本文介绍了TFW、JGW、PGW等地理参考文件的基本原理和应用。这些文件通过简单的文本格式存储栅格图像的地理坐标信息,适用于平面坐标系下的GIS数据处理。文章详细说明了文件各行的含义,并提供了在ArcGIS和Globalmapper中生成这些文件的具体操作步骤,包括导出TIFF、JPG、PNG格式时勾选生成对应坐标文件的选项。这些文件虽然简单易用,但仅适用于平面坐标系,且功能相对有限。配套视频教程提供了更详细的操作演示。

智慧空间实验室 2402

华为OD机试双机位C卷:打印机队列 (C++/Py/C/Java/Js/Go)

华为OD机试双机位C卷 打印机队列,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。华为OD机试 - 打印机队列。

qq_45776114的博客 1793

HashSet与TreeSet的contains方法解读

Set与Map的关系 1、看下HashSet的add方法: // Dummy value to associate with an Object in the backing Map private static final Object PRESENT = new Object(); public boolean add(E e) { return map.put(e, PRESENT)==null; } 它的put调用了map的put方法,其实Set和

疯狂的蜗牛 1469

嵌入式u-boot最全面试题及参考答案(5万字长文持续更新)

例如,在一个便携式设备中,U-Boot 在启动时初始化电源控制器,将输出电压设置为合适的值。命令是u-boot构建过程中用于配置u-boot选项的命令。在嵌入式系统中,启动画面(也称为启动Logo或Splash Screen)是展示给用户的第一印象,它可以包含公司的标志、产品的名称或其他相关信息。u-boot允许通过环境变量来进行配置,这使得开发者可以根据不同的硬件平台和项目需求灵活地调整u-boot的行为。写入操作可以是字节级别的,也可以是块级别的,具体取决于设备的性能和操作系统的需求。

大模型大数据攻城狮的专栏 997

Sgg:HashSet的contains方法

HashSet的contains方法 contains方法用来判断Set集合是否包含指定的对象。 语法 boolean contains(Object o) 返回值:如果Set集合包含指定的对象,则返回true;否则返回false。 ...

qq_43123615的博客 745

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

JAVA HashSet contains()方法实现机制

contains()方法是通过HashSet容器内对象的两个方法进行判断的。—————————————————————————————— 第一个是hashCode()方法。通过此方法可以快速确定希望添加的元素是否不存在于该容器。如果不存在,那hash值一定不相同。当hash值比较有相同时,继续通过equals方法进行比较。Object类对equals方法的定义是比较两个对象的内存地址是否一样,如果

Carolineshiny的博客 4659

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

contains方法_「Java必修课」ArrayList与HashSet的contains方法性能比较

1 简介在日常开发中,ArrayList和HashSet都是Java中很常用的集合类。ArrayList是List接口最常用的实现类;HashSet则是保存唯一元素Set的实现。本文主要对两者共有的方法contains()做一个简单的讨论,主要是性能上的对比,并用JMH(ava Microbenchmark Harness)进行测试比较。2 先看JMH测试结果我们使用一个由OpenJDK/Orac...

weixin_42311335的博客 621

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

HashSet与List的Contains方法

HashSet不能用索引访问,不能存储重复数据。 HashSet<string> hs = new HashSet<string>(); hs.Add("hahah"); Console.Write(hs[0]); //这里会报错 List<string> ls = new List<string>(); ls.Add("hhhh"); Co

Jeff的博客 1330

ArrayList和HashSet的Contains()方法

首先来看一道笔试题: import java.util.ArrayList; import java.util.HashSet; public class Foo { int value; Foo(int value) {

fwwdn's tech blog 6430

java 中ArrayList、HashSet和HashMap的contains方法

对于List.contains方法,实际上对每个对象调用一次equals方法,时间复杂度为o(n) HashSet的contains需要对象的hashCode(根据内存地址计算)和equals都为真才会判定为true,时间复杂度为o(1) HashMap实现了两种contains:containsKey、containsValue              containsKey:对key的...

weixin_41615787的博客 3194

ArrayList和HashSet中contains方法的不同

ArrayList和HashSet中contains方法的不同 首先来看一道笔试题: view plaincopy to clipboardprint?import java.util.ArrayList;    import java.util.HashSet;    public class Foo {       int value;      

shendeguang的专栏 1245

ArrayList和HashSet的contains()方法的时间复杂度

ArrayList底层使用数组作为存储,当给定一个Object判断是否存在需要去遍历数组,和每一个元素进行比较从源码可以发现,contains()方法通过调用indexOf()方法来判断,而后者需要遍历数组,因此ArrayList的contains()方法的时间复杂度为O(n)

m0_56359375的博客 1422
下一篇: 【转】外连接&全连接的区别
DeepNightTwo
博客等级 码龄21年 3粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值