how2j.cn


步骤 1 :

增加元素到Set中的时候,如何判断是否重复

edit
根据hashcode原理,往HashSet里增加元素,其本质就是把元素作为key添加到HashMap上。
所以,判断增加的元素是否重复,就是判断key是否重复
1. 如果hashcode 不一样,一定不重复
2. 如果hashcode 一样, 再使用equals进行比较。
倘若equals也一样,则重复
倘若equals不一样,则不重复
参考分析HashMap的性能
运行效果
增加元素到Set中的时候,如何判断是否重复
package collection; import java.util.HashSet; public class TestCollection { public static void main(String[] args) { HashSet<String> names = new HashSet<String>(); //gareen 对应的hashcode是1001 (其实不是,为了便于理解,假设是1001) //HashSet内部是HashMap,所以是本质上是map.put("gareen",PRESENT); //map是空的,所以一定加的进去 names.add("gareen"); //temoo的hashcode是1004, 1004这个位置,没有元素,顺利加入 names.add("temoo"); //db的hashcode是1008, 1008这个位置,没有元素,顺利加入 names.add("db"); //annie的hashcode是1008, 1008这个位置有db了 //把annie和db进行equals比较,不一样,即不重复,也可以加进去 names.add("annie"); //gareen 对应的hashcode是1001,1001这个位置以及有元素,并且key也是 "gareen" //equals也一样,即代表重复,所以"gareen"再加入,就加不进去了 names.add("gareen"); } }


源代码
1. 双击选中单词 2. 三击选中整行 3. CTRL+F 查找 4. F8 全屏编辑,再次点击恢复
渲染中 渲染完成
效果


HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。


提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
关于 Temp-temp-集合临时temp 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 578362961
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: https://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图