黑马程序员技术交流社区

标题: 新手求教 [打印本页]

作者: anyanyhai    时间: 2012-3-24 11:21
标题: 新手求教
HashMap和Hashtable到底有什么区别?
还有定义一个数组:int[] arr={1,3,5};下面就可以用arrays.sort(arr);排序。arrays不是一个集合吗?怎么能直接操作数组?
我对这部分有点晕了。
作者: 欧阳博    时间: 2012-3-24 11:31
第一:HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),并且最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。

第二:Arrayss是java.util包下的一个类,他下面有一系列静态方法,sort()就是提供排序的方法,具体你可以查看api文档。
作者: 王思兰    时间: 2012-3-24 11:34
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 算法都大概一样,所以性能不会有很大的差异。
Arrays是一个辅助类,此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂。

除非特别注明,否则如果指定数组引用为 null,则此类中的方法都会抛出 NullPointerException。
具体参考API。
作者: 张明星    时间: 2012-3-24 13:13
HashMap:底层是哈希表数据结构,允许使用空键,空值,集合不同步,效率高
HashTable: 底层也是哈希表数据结构,不可存入空键空值,不同步
Arrays是集合框架中的工具类,像Calendar,Date等,调用其中的方法直接当工具用可以了
如static void sort(int[] a)
          对指定的 int 型数组按数字升序进行排序。
作者: 〆_xin_、_跳    时间: 2012-3-24 14:57
HashMap不是线程安全的。hashmap是一个接口 是map接口的子接口,是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重复值。HashMap允许null key和null value,而hashtable不允许。HashTable是线程安全的一个Collection。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算法都大概一样,所以性能不会有很大的差异。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2