HashMap和Hashtable

HashTable

      散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的  速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表

  哈希表是种数据结构,它可以提供快速的插入操作和查找操作。

  哈希表算法-概念作用

  线性表:线性表都是以栈、列队、字符串、数组等特殊线性表的形式使用的。

线性表是一个线性结构,它是一个含有N>=0个节点的有限序列,对于其中的节点,有且有一个开始节点没有前驱但有一个后续节点,有仅有一个终端节点没有后续但有一个前驱节点,其它的节点都有且仅有一个前驱和一个后续节点。

 

HashMap和Hashtable

HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。

HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。

HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。 

Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。

最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。 

Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。

两句话总结:

HashMap => 不同步、空键值、效率高;

Hashtable => 同步、非空键值、效率略低

 

在C#中没有找到hashmap的命名空间。

posted @ 2013-09-04 22:44  回忆的颜色  阅读(483)  评论(0编辑  收藏  举报