HashTable, HashSet, HashMap的区别
来源:互联网 发布:南昌淘宝运营公司 编辑:程序博客网 时间:2024/05/22 03:34
hash是一种很常见也很重要的数据结构,是用hash函数根据键值(key)计算出存储地址,以便直接访问。由完美hash函数(即键值和地址是一一对应的)计算出的地址,在访问时,时间复杂度为O(1)。
java的Object对象提供了hashCode()这个方法,该方法返回一个hash值。对于变量,该方法一般返回该变量的内存地址。在使用java的HashMap对象时,该方法和equals()方法一起使用,要确保equals()返回true时,hashCode()能返回同样的值;实现这点,一般要重写对象的hashCode()/equals()方法。
关于hash,java提供了三个类HashMap, HashSet, HashTable,他们的区别如下:
1. HashSet、HashTable实质使用HashMap实现的;
2. 在HashSet中,有如下定义:
private final static Object dummy = new Object();public boolean add(Object obj){ return map.put(obj, dummy) == null; }即插入HashSet中的值,为HashMap中的key,所有的key对应的value均为dummy。
3. HashTable继承于Dictionary类,与HashMap的主要的不同是HashTable是同步的(synchronize)并且不允许null值操作(key 和value均不能为null);在多线程访问时,不需要为他的方法实现同步,而HashMap必须为之提供外同步。
1 0
- HashMap、HashSet、HashTable的区别
- HashSet HashTable HashMap的区别
- HashSet HashTable HashMap的区别
- HashSet HashTable HashMap的区别
- HashSet HashTable HashMap的区别
- HashSet HashTable HashMap的区别
- HashSet HashTable HashMap的区别
- HashTable, HashSet, HashMap的区别
- HashSet HashTable HashMap的区别
- HashTable, HashSet, HashMap的区别
- HashSet HashTable HashMap的区别
- HashSet HashMap Hashtable的区别
- HashMap,Hashtable,HashSet的区别
- HashMap, HashTable, HashSet区别
- Hashtable HashMap HashSet 区别
- HashMap,HashTable,HashSet区别
- HashMap,HashTable,HashSet区别
- hashmap,hashtable,hashset区别
- Linux系统编程(1)——文件与I/O之C标准I/O函数与系统调用I/O
- 状态模式——水之三态
- border-image
- linux下c的共享库和静态库
- 7月20日--8月1日30小时,剩3600小时
- HashTable, HashSet, HashMap的区别
- 飞机游戏源码学习小结
- tcpdump 抓包
- codeforces543AWriting Code(完全背包)
- OSG中的粒子系统
- OC_NSDictionary和NSMutableDictionary
- Ubuntu14.04安装OpenCV3.0
- 使用eclipse tool 逆向生成Hiberante类xml、和hbm.xml
- ReSharper 配置及用法