Hashtable和HashMap的区别


1.Hashtable是Dictionary的子类,HashMap是Map接口的一个实现类;


2.Hashtable中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的。即是说,在多线程应用程序中,不用专门的操作就安全地可以使用Hashtable了;而对于HashMap,则需要额外的同步机制。但HashMap的同步问题可通过Collections的一个静态方法得到解决:
Map Collections.synchronizedMap(Map m)
这个方法返回一个同步的Map,这个Map封装了底层的HashMap的所有方法,使得底层的HashMap即使是在多线程的环境中也是安全的。


3.在HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。当get()方法返回null值时,即可以表示HashMap中没有该键,也可以表示该键所对应的值为null。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键,而应该用containsKey()方法来判断。

hashtable和hashmap在使用上的优劣

1.同步是指多线程的时候,如同步了,只能是有一个线程访问,当然同步了的话
访问速度上没有非同步的快

2.Hashtable不允许null key和null value
    HashMap允许一个null key和多个null value

3.public class Hashtable extends Dictionary
    implements Map, Cloneable, Serializable
    (实现的是Map而不是Set)

    public class HashMap extends AbstractMap
    implements Map, Cloneable, Serializable

4. HashSet是一个只有key的HashMap,不过它是一个Collection
     而不是一个Map

=========================================================================

解决HashMap的同步问题,可以使用:ListOrderedMap

=============================================================================

HashMap遍历:

HashMap m=new HashMap();

Iterator iterator = m.keySet().iterator();
     while(iterator.hasNext()) {

             Object oj=iterator.next();

             //m.get(oj).................

}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值