Rench'

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

最近刚结束的OA子项目,我带的几个同学在做项目的时候,都采用的Hashtable 来进行数据的传递,而我平常喜欢用HashMap,可能是习惯了,以前在往里面存null的时候,没有报错,但是在Hashtable里面却报空指针异常,由于经验比较少,当时在这行代码上面纠结了半天,已在在想,存null应该不会报错呀,虽然表面这么想,但是心里已经知道自己错了,以前在刚接触Map接口的时候就知道这个问题,后来用if进行判断存,结果就不报错了,果不其然,确实Hashtable,不允许空(null)键值(key),而HashMap允许空(null)键值(key,由于非线程安全,效率上可能高于Hashtable

HashMapHashtablecontains方法去掉了,改成containsvaluecontainsKey。因为contains方法容易让人引起误解。 Hashtable继承自Dictionary类,而HashMapJava1.2引进的Map interface的一个实现。

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

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

posted on 2011-07-29 15:42  舞飞林  阅读(1296)  评论(1编辑  收藏  举报