使用HashSet可能会导致内存泄漏的原因
* 内存泄漏: 就是当前内存中已经没有使用这个对象,但它仍然还停在内存中,没有被释放,一直占用着内存空间.
//equals方法默认比较的是否为同一对象的引用.
/*哈希算法: 用来手提高从元素中查找元素的效率,将集合分成若干个区域,每一个对象都可以计算出一个hashCode,
* 可以将hashCode分组,每一组分别对应一个存储区域.根据对象的哈希值,就可以确定对象存储在哪个区域 。
*
* HashSet就是采用合希算法存取对象的集合。
* 它的内部采用了对某个数字n进行取余的方式对哈希码进行分组和划分对象存储区域,Object类中对义了hashCode()方法,用来返回每个Java对象的哈希值,
* 当从HashSet中查找某个对象时,Java系统首先首先调用对象的hashCode()方法获得该对象的哈希码,然后根据哈希码找到对应的区域,然后取出该区域的每个对象
* 使用equals方法进行比较,这样不用遍历集合中所有的对象就可以得到结果。可见HashSet集合有很好的对象检索性能,但是HashSet集合存储的性能要低些。
* 因为向HashSet集合添加对象时,要先计算它的HashCode值和根据这个hashcode来确定这个对象在集合中存放的位置.
* 为了保证一个类的实例对象在HashSet中正常存储,要求这个类的二个实例对象用equals方法比较相等时,他们的hashcode值也必须相等,
* 也就是说 obj1.equals(obj2) ,则要有:obj1.hashCode() == cbj2.hashCode()
*
* 当一个对象被存放到HashSet以后,就不能再修改这个对象的那些参与计算哈希值运算的字段了.否则,对象修改后的哈希值与最初存储进HashSet时的hashcode值不
* 再相等,在这种情况下即使在使用contains()方法使用当前对象去HashSet检索时,也将返回不同对象的结果,这也会导致无法从hashSet()中删除当前对象,从而就导致了内存泄漏
分享到:
相关推荐
NULL 博文链接:https://zhaoshijie.iteye.com/blog/2054158
hash表和hashCode1
在java中一个hashCode算法,可以用来计算一个字符串的hash值,今天一个朋友突然问俺能不能在js中计算hashCode,要求和java的hashCode计算结果一样。 对于java的hashCode,以前到现在也一直没有了解过其算法,不过...
总共有22种算法。包括crc32, crc64, md2, md4, md5, md6, sha-0, sha-1等。 选中“Show all functions”则可显示出Hash Codes 所支持的所有算法。
从头到尾彻底解析Hash_表算法,可以多了解一下
主要介绍了Java语言Consistent Hash算法学习笔记(代码示例),分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
ATM系统 Clone方法 toString方法:表示返回对象的字符串表示形式 包名.类名@hashCode(内存地址) ...返回一个hash code码,Integer,内存地址有关的hash算法 如果equal返回true的话,hashCode相同,重写hashCode方法
hashCode的作用 要想了解一个方法的内在原理,我们首先需要明白它是干什么的,也是这个方法的作用。在讲解数组时(java提高篇(十八)——数组),我们提到数组是java中效率高的数据结构,但是“高”是有前提...
Google-HashCode-2020(资格赛) 哈希代码是Google举办的面向全球学生和专业人士的团队编程竞赛。 您选择您的团队和编程语言,我们选择一个工程问题供您解决。 今年的比赛以在线资格赛拉开帷幕,在线资格赛使您的...
试题虽不多,但经典! 涉及问题如:线程安全、hash算法的实现原理,hashcode的实现原理、排序算法复杂度、SQL语句效率写法、ajax跨域请求等,均列出详细答案,可以巩固JAVA知识。 资源宝贵!!
Google Hash Code 2020练习轮的解决方案-得分:1,505,004,616 解决方案 这段代码给出了完美的分数,但并不是完美的代码,可以对其进行优化并在以后修复错误。 这只是最佳的解决方案之一,旨在激励人们并为他们提供...
xls-to-dynamic-json convert xls to dynamic json. 将xls解析成json. 会将xlsjs生成的json 数组转成key在外的对象,并且会对第三行... hashcode 使用的是bkdrhash算法 json: 会尝试将字符串转成json, 如果转不成就用
集合框架 Collection、List、Set、Map的接口及其实现类、迭代、Hash 算法与 hashCode 方法、comparable、泛型 chp12.异常 概念、分类、产生、传递、处理、自定义异常 chp13.线程 概念、创建、状态转换、数据共享、...
hash算法的实现原理,hashcode的实现原理 error和exception的区别,RuntimeException和非RuntimeException的区别 继承与组合的区别,使用场景 使用静态工厂方法的好处和坏处 排序算法,他们是时间复杂度是...
hashCode方法的作用? Object类中有哪些方法?列举3个以上。 NIO是什么?适用于何种场景? HashMap数据结构、扩展策略,Hash冲突攻击如何防范,如何实现线程安全的HashMap? JVM内存结构,GC算法,CMS、G1的原理 NIO...
Google编码竞赛: 这是我在任何Google编码比赛中使用的算法和脚本的存储库。 目前,这些脚本是为以下目的添加的: 哈希代码2021(练习轮) 哈希代码2021(预选赛回合)