HashSet的存储原理
来源:互联网 发布:js函数递归调用 编辑:程序博客网 时间:2024/06/04 19:11
HashSet的底层用哈希散列表来存储对象(默认长度为16的数组),
假如:Set set=new HashSet();
set.add(obj);
内部存储过程为:定义h=obj.hashCode,得到obj对象的哈希码h,再对h进行hash散列运算,对数组长度进行求余,假如长度为16,则返回一个0-15之间的值,然后这个值就是存在HashSet数组中的下标。如果下标位置没有对象(不起冲突),则把obj加到该位置;如果已近有对象(起冲突),则用equals判断两对象是否相等,相等则舍弃obj,不相等,则把obj以节点的方式加在该对象下面。
所以,只有覆盖了对象的equals方法和hashCode方法,让此方法按自己的算法运算的话才能算是相同的对象,覆盖hashCode方法的原则:
原则1:让equals相等的对象返回相同的hashCode(为了过滤掉相等的元素)
原则2:尽量保证equals不相同的对象返回不同的hashCode(为了添加不同的元素)
假如:Set set=new HashSet();
内部存储过程为:定义h=obj.hashCode,得到obj对象的哈希码h,再对h进行hash散列运算,对数组长度进行求余,假如长度为16,则返回一个0-15之间的值,然后这个值就是存在HashSet数组中的下标。如果下标位置没有对象(不起冲突),则把obj加到该位置;如果已近有对象(起冲突),则用equals判断两对象是否相等,相等则舍弃obj,不相等,则把obj以节点的方式加在该对象下面。
0 0
- HashSet的存储原理
- Java中HashSet的存储原理
- hashSet的存储机制
- HashSet的存储机制
- Hash存储机制 - HashMap原理 HashSet原理
- HashSet的实现原理
- HashSet的实现原理
- HashSet的实现原理
- HashSet的实现原理
- HashSet的实现原理
- HashSet的实现原理
- HashSet的实现原理
- HashSet的实现原理
- 16.3 HashSet的原理
- HashSet的实现原理
- HashSet的实现原理
- HashSet的实现原理
- HashSet的实现原理
- 在ubuntu中安装glew
- 聚类分析(三) K中心点算法(k-mediods)
- X86内存布局
- 聚类分析(一) 什么是聚类分析
- 我对Objective C的一些基础理解(第一版)
- HashSet的存储原理
- 在linux下为oracle开启大页(hugepage)
- 2014-03-30工作日志:我对如何创建和调用dll的总结
- visual studio 2012空格上出现蓝色的点和箭头~
- [新技术]Google Code上的15个出色的WEB工具与素材(转载)
- FFT的频谱分辨率
- javascript add(1)(2)(3)(4)解析
- UML实战之Statechart Diagrams
- MySQL外键约束方式