HashSet,HashMap与HashTable的关系与区别
2012-07-26 16:17
417 查看
hash函数,又叫散列函数,是内存中地址的一种映射关系,为了方便与查找操作……。
对于HashMap来说,如果第一次往其中放置Entry对象,会根据其key的哈希值(哈希表),选择相应的内存地址,当第二次放是,会进行一次的判断,如果和前面的哈希值一样,则在进行一次的再hash,知道该内存位置为空时。否则直接放进去。操作的内存类似于数组(不连续的)。
HashSet底层是通过HashMap来实现的。
HashMap底层是通过带hash的数组(Entry类型的)来实现的。
HashTable:类实现一个哈希表,该哈希表将键映射到相应的值。任何非 null 对象都可以用作键或值。为了成功地在哈希表中存储和获取对象,用作键的对象必须实现 hashCode 方法和 equals 方法。Hashtable 的实例有两个参数影响其性能:初始容量 和加载因子。容量 是哈希表中桶 的数量,初始容量 就是哈希表创建时的容量。注意,哈希表的状态为 open:在发生“哈希冲突”的情况下,单个桶会存储多个条目,这些条目必须按顺序搜索。加载因子 是对哈希表在其容量自动增加之前可以达到多满的一个尺度。初始容量和加载因子这两个参数只是对该实现的提示。关于何时以及是否调用
rehash 方法的具体细节则依赖于该实现。
对于HashMap来说,如果第一次往其中放置Entry对象,会根据其key的哈希值(哈希表),选择相应的内存地址,当第二次放是,会进行一次的判断,如果和前面的哈希值一样,则在进行一次的再hash,知道该内存位置为空时。否则直接放进去。操作的内存类似于数组(不连续的)。
HashSet底层是通过HashMap来实现的。
HashMap底层是通过带hash的数组(Entry类型的)来实现的。
HashTable:类实现一个哈希表,该哈希表将键映射到相应的值。任何非 null 对象都可以用作键或值。为了成功地在哈希表中存储和获取对象,用作键的对象必须实现 hashCode 方法和 equals 方法。Hashtable 的实例有两个参数影响其性能:初始容量 和加载因子。容量 是哈希表中桶 的数量,初始容量 就是哈希表创建时的容量。注意,哈希表的状态为 open:在发生“哈希冲突”的情况下,单个桶会存储多个条目,这些条目必须按顺序搜索。加载因子 是对哈希表在其容量自动增加之前可以达到多满的一个尺度。初始容量和加载因子这两个参数只是对该实现的提示。关于何时以及是否调用
rehash 方法的具体细节则依赖于该实现。
相关文章推荐
- HashMap与HashTable的区别、HashMap与HashSet的关系
- HashMap与HashTable的区别、HashMap与HashSet的关系
- HashMap与HashTable的区别、HashMap与HashSet的关系
- HashMap与HashTable的区别、HashMap与HashSet的关系
- HashMap与HashTable的区别、HashMap与HashSet的关系 t的关系
- Hashtable、HashMap和HashSet区别
- HashMap,HashSet,Hashtable以及TreeMap的原理和区别
- HashMap,HashTable,HashSet区别
- ArrayList,Vector,HashMap,HashSet,HashTable之间的区别与联系
- HashMap HashTable HashSet区别剖析
- 【转】HashMap、TreeMap、Hashtable、HashSet和ConcurrentHashMap区别
- HashMap和Hashtable及HashSet的区别<转>
- Java中HashSet HashTable HashMap的区别
- HashMap、HashSet、HashTable的区别?
- ArrayList,Vector,HashMap,HashSet,HashTable之间的区别与联系
- HashMap,HashTable,HashSet区别(转)
- HashMap和Hashtable及HashSet的区别
- HashMap、HashTable、HashSet区别
- ArrayList,Vector,HashMap,HashSet,HashTable之间的区别与联系
- 909422229__Hashtable、HashMap、hashset区别分析与一些面试小题