Hashtable和HashMap深入学习心得
来源:互联网 发布:张艺兴新经纪人知乎 编辑:程序博客网 时间:2024/06/08 06:27
转自: http://hi.baidu.com/onlylamplight/blog/item/4b42345d0a65b248fbf2c0b7.html
在弄清楚这几个集合类前先必须要清楚的知道Hash,所谓Hash,一般是一个整数,通过某种算法,可以把一个字符串"压缩" 成一个整数,这个数称为Hash。当然,一个32位的数是不可能反映出全部的字符串的,所以有的时候会出现Hash冲突。(ps:哈希表又名散列表)哈希表主要目的是用于解决数据的快速定位问题。我们在在所有的线性数据结构的查找中数组是最快的因为它可通过数组下标直接定位到相应的数组空间,就不需要一个个查找。而哈希表就是利用数组这个能够快速定位数据的结构解决以上的问题的。只是哈希表通过一个哈希算法把key转换成了这个数组下标,所以在hash算法中的key不能为null
Hashtable:
在jdk帮助文档中是这样写HashTable的:此类实现一个哈希表,该哈希表将键映射到相应的值。任何非 null
对象都可以用作键或值。HashTable中有两个重要的参数(初始容量 和加载因子),其中初始容量就是是哈希表中桶 (哈希表并不是用一个简单的数组来表示的,他的数组元素也是一个复杂的数据结构,这里的桶我想就是指的这些元素吧)的数量。加载因子 是对哈希表在其容量自动增加之前可以达到多满的一个尺度。通过Hashtable的源码我们可以发现,他的很多操作前面都
加了synchronized关键字,就是为了使Hashtable线程安全,所以Hashtable是同步的。
HashMap:
HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。HashMap的数据是无序的。在jdk帮助文档上对HashMap的实例化这样写到:最好在创建时完成这一操作,以防止对映射进行意外的非同步访问,如下所示:
Map m = Collections.synchronizedMap(new HashMap(...));
- Hashtable和HashMap深入学习心得
- 深入理解HashMap和HashTable
- 深入解析HashMap、HashTable
- 深入解析HashMap、HashTable
- 深入解析HashMap、HashTable
- 深入解析HashMap、HashTable
- 深入解析HashMap、HashTable
- 深入解析HashMap、HashTable
- 深入解析HashMap、HashTable
- 深入解析HashMap、HashTable
- 深入解析HashMap、HashTable
- HashMap,LinkedHashMap和Hashtable类的深入剖析与理解
- HashMap与HashTable深入详解
- 深入解析HashMap、HashTable,ArrayList
- 深入解析HashMap、HashTable、ConcurrentHashMap
- Hashtable和HashMap对象
- HashMap和Hashtable区别
- Hashtable和HashMap类
- Windows下架设svn服务器方法指导
- Hashtable,ListDictionary,HybridDictionary 的使用
- HashTable学习1
- HashTable学习2
- 严重:Error starting static Resources 错误的解决
- Hashtable和HashMap深入学习心得
- virtualbox共享
- 真正最正确的用BAT运行JAVA不显示DOS窗口(连闪一下都不闪)
- 趣味C—猴子吃桃问题
- CONVERT在日期转换中的使用示例
- 项目管理第一章:引论
- 什么是云计算 以及能给我们带来什么
- 知其然不知其所以然!
- text to scene 文景转换