hashSet保证不重复的原理
来源:互联网 发布:东方财富dk指标源码 编辑:程序博客网 时间:2024/05/16 17:26
总的来说,在向hashSet中add()元素时,判断元素是否存在的依据,不仅仅是hash码值就能够确定的,同时还要结合equles方法。
HashSet 类中的add()方法:
public boolean add(E e) { return map.put(e, PRESENT)==null; }
put()方法:
public V put(K key, V value) { if (key == null) return putForNullKey(value); int hash = hash(key.hashCode()); int i = indexFor(hash, table.length); for (Entry<K,V> e = table[i]; e != null; e = e.next) { Object k; if (e.hash == hash && ((k = e.key) == key || key.equals(k))) { V oldValue = e.value; e.value = value; e.recordAccess(this); return oldValue; } } modCount++; addEntry(hash, key, value, i); return null; }
可以看到for循环中,遍历table中的元素,
1,如果hash码值不相同,说明是一个新元素,存;
如果没有元素和传入对象(也就是add的元素)的hash值相等,那么就认为这个元素在table中不存在,将其添加进table;
2(1),如果hash码值相同,且equles判断相等,说明元素已经存在,不存;
2(2),如果hash码值相同,且equles判断不相等,说明元素不存在,存;
如果有元素和传入对象的hash值相等,那么,继续进行equles()判断,如果仍然相等,那么就认为传入元素已经存在,不再添加,结束,否则仍然添加;
阅读全文
0 0
- hashSet保证不重复的原理
- HashSet类是如何实现添加元素保证不重复的---哈希码的原理
- 集合的概念及应用和HashSet保证数据不重复的原理
- 补充HashSet集合hashCode和equals的重写,保证元素的不重复
- HashSet保证数据唯一的原理
- HashSet保证元素唯一性的原理
- LoadRunner的参数化保证不重复
- HashSet保证元素唯一性原理图解
- HashSet插入不重复元素
- Set 怎么保证不重复
- java 使用hashset产生不重复的随机数
- HashSet不重复存储元素的执行过程
- ArrayList,HashSet判断对象是否重复的原理
- HashSet如何保证元素的唯一性
- HashSet保存自定义不重复对象
- HashSet元素不重复底层比较
- JAVA HashSet 去除重复值原理
- JAVA HashSet 去除重复值原理
- 深入浅出,java垃圾回收机制
- C++单例的完美实现
- 标签二值化LabelBinarizer
- Java基础:持有对象
- Matlab 快速入门
- hashSet保证不重复的原理
- construct2 —简单制作游戏的好帮手
- 2.2OpenCV格式化输出矩阵
- 粒子滤波的原理和MATLAB实现
- java文件复制
- 一些技巧&套路&注意事项 (持续更新)
- leetcode.array--39. Combination Sum
- win10 CPU占用率过高 经常100%
- 【DP】【线段树】【树状数组】saber 题解