HashMap 与 HashTable的区别
2014-03-07 13:50
375 查看
1.线程安全
HashMap是线程不安全的,HashTable是线程安全的
在多线程下使用HashTable不用考虑线程同步,而HashMap要进行线程同步处理,使用synchronized关键字
当然Collections类(不能实例化,因为Collections类的构造方法是private的,对外部是不可见的)的静态方法
Collections.synchronizedMap(new HashMap());即可
不能使用Collections.synchronizedCollection(Collection c);因为Map不是interface Collection的子接口,
2.key值
HashMap允许key value 都为null,HashTable 不允许
3.两者采用的hash算法差不多
当在单线程下使用HashMap,比使用HashTable效率要高
HashMap是线程不安全的,HashTable是线程安全的
在多线程下使用HashTable不用考虑线程同步,而HashMap要进行线程同步处理,使用synchronized关键字
当然Collections类(不能实例化,因为Collections类的构造方法是private的,对外部是不可见的)的静态方法
Collections.synchronizedMap(new HashMap());即可
不能使用Collections.synchronizedCollection(Collection c);因为Map不是interface Collection的子接口,
2.key值
HashMap允许key value 都为null,HashTable 不允许
3.两者采用的hash算法差不多
当在单线程下使用HashMap,比使用HashTable效率要高