您的位置:首页 > 其它

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 方法的具体细节则依赖于该实现。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: