当前位置: 澳门新濠3559 > 编程 > 正文

虽然我们在开发中会经常用到HashMap和HashTable,

时间:2019-10-07 13:13来源:编程
主要的区别有:线程安全性,同步(synchronization),以及速度### Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Mapinterface的一个实现。 HashTable![HashMap]() HashMap是Hashtable的轻量级实现,他们
主要的区别有:线程安全性,同步(synchronization),以及速度###

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

图片 1HashTable![HashMap]()

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

HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。

图片 2异同.jpg

最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步(Collections.synchronizedMap)。Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。

HashMap和Hashtable的区别

HashMap不是线程安全的,HashTable是线程安全的一个Collection。HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。

虽然我们在开发中会经常用到HashMap和HashTable,HashMap不是线程安全的。 

虽然我们在开发中会经常用到HashMap和HashTable,HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的分别。但它们的区别是什么呢?我自己都有点忘了,哈哈,来复习下。下面我们先看两个类。

导读:

1 .HashMap不是线程安全的

HashMap是map接口的子类,是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重复值。HashMap允许null key和null value,而hashtable不允许。

2 .  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算法都大概一样,所以性能不会有很大的差


publicstaticvoidmain(String args[]) {

HashTable h=newHashTable();

h.put("用户1",newInteger(90));

h.put("用户2",newInteger(50));

h.put("用户3",newInteger(60));

h.put("用户4",newInteger(70));

h.put("用户5",newInteger(80));

Enumeration e=h.elements();while(e.hasMoreElements()){

System.out.println(e.nextElement());

}

总结:

hashmap : 线程不安全;

允许有null的键和值;

效率高一点

;方法不是Synchronize的要提供外同步;

有containsvalue和containsKey方法;HashMap 是Java1.2 引进的Map interface 的一个实现

HashMap是Hashtable的轻量级实现


hashtable

线程安全

不允许有null的键和值

效率稍低、

方法是是Synchronize的

有contains方法方法

、Hashtable 继承于Dictionary 类

Hashtable 比HashMap 要旧

这些都代表了Java中的集合,这里主要从其元素是否有序,是否可重复来进行区别记忆,以便恰当地使用,当然还存在同步方面的差异,见上一篇相关文章。

HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。HashMap允许将null作为一个entry的key或者value,而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 主要从三方面来说。
一.历史原因:Hashtable 是基于陈旧的Dictionary 类的,HashMap 是Java 1.2 引进的Map 接口
的一个实现
二.同步性:Hashtable 是线程安全的,也就是说是同步的,而HashMap 是线程序不安全的,
不是同步的
三.值:只有HashMap 可以让你将空值作为一个表的条目的key 或value.

在往数据库中插入数据的时候,首先应该有一个ContentValues的对象所以:

运城互联网论坛地址:http://www.dmyc8.com/forum-104-1.html

SQLiteDataBase sdb ;

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

sdb.insert(database_name,null,initialValues);

ContentValues

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

ContentValues initialValues = new ContentValues();

ContentValues 和HashTable类似都是一种存储的机制 但是两者最大的区别就在于,contenvalues Key只能是String类型,values只能存储基本类型的数据,像string,int之类的,不能存储对象这种东西。ContentValues 常用在数据库中的操作。

hastmap是一个接口 是map接口的子接口,是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重复值。HashMap允许null key和null value,而hashtable不允许。

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

initialValues.put(key,values);

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

HashMap和HashTable

编辑:编程 本文来源:虽然我们在开发中会经常用到HashMap和HashTable,

关键词: 澳门新濠3559