欢迎来到天天文库
浏览记录
ID:14265316
大小:48.00 KB
页数:3页
时间:2018-07-27
《hashmap和hashtable的区别(修正版)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、HashMap和Hashtable的区别(网上流传版本的修正版)尽信书不如无书,我今天在看网上的一些资料的时候发现一遍篇《HashMap和Hashtable的区别》的文章,随手就在Eclipse里实验了一下,结果发现很多原来文章中的错误,现在把这个问题修改好以后贴在这里,希望对大家的学习也有帮助。HashMap和Hashtable的区别。错误说法:1. HashTable不允许null值(key和value都不可以),HashMap允许null值(key
2、和value都可以)。这句话容易让人误会,到底是怎么个不允许法呢?其实在编译期不会有任何的不一样,会照样执行,只是在运行期的时候Hashtable中设置的话回出现空指针异常2. 在HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。当get()方法返回null值时,即可以表示HashMap中没有该键,也可以表示该键所对应的值为null。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某
3、个键,而应该用containsKey()方法来判断。不用多说,看下面的程序就可以:HashMapmap=newHashMap(); map.put("Null",null); map.put(null,"Null"); map.put(null,"Empty"); System.out.println(map.get(null)); System.out.println(map.get("Null")); System.out.println(map.get("NullTh
4、ere")); System.out.println(map.containsKey("Null"));System.out.println(map.containsKey("NullThere")); 输出结果为:Emptynullnulltruefalse HashMapHashtable继承,实现HashMap extendsAbstractMap implementsMap,Cloneable,Serializab
5、leHashtable extendsDictionary implementsMap,Cloneable,Serializable多线程,同步未同步的,可以使用Colletcions进行同步Map Collections.synchronizedMap(Map m)已经同步过的可以安全使用对null的处理HashMapmap=newHashMap();map.put(null,"Null");map.put("Null",null);map.containsKey(null);map.cont
6、ainsValue(null);以上这5条语句无论在编译期,还是在运行期都是没有错误的.在HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。当get()方法返回null值时,即可以表示HashMap中没有该键,也可以表示该键所对应的值为null。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键,而应该用containsKey()方法来判断。Hashtabletable=newHashtable();table.put(null,"Null");table.
7、put("Null",null);table.contains(null);table.containsKey(null);table.containsValue(null);后面的5句话在编译的时候不会有异常,可在运行的时候会报空指针异常具体原因可以查看源代码publicsynchronizedVput(Kkey,Vvalue){ //Makesurethevalueisnotnull if(value==null){ thrownewNullPointerException(); }………….增长率
8、voidaddEntry(inthash,Kkey,Vvalue,intbucketIndex){ Entrye=table[bucketIndex]; table[bucketIndex]=newEnt
此文档下载收益归作者所有