- 浏览: 144340 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
august_000:
很有道理,我已经亲自测试过了:
public class ...
单例模式之线程安全解析 -
Chris_bing:
一个单例有这么多名堂,最后那个内部类的解决方案很有创意啊,受教 ...
单例模式之线程安全解析
1.hashMap去掉了HashTable 的contains方法,但是加上了containsValue()和containsKey()方法。
2.hashTable同步的,而HashMap是非同步的,可以使用Colletcions进行同步
Map Collections.synchronizedMap(Map m);效率上HashMap比Hashtable要高。
3.hashMap允许空键值,而hashTable不允许。
4.HashTable不允许null值(key和value都不可以),HashMap允许null值(key和value都可以)。
其实在编译期不会有任何的不一样,会照样执行,只是在运行期的时候Hashtable中设置的话回出现空指针异常
5.在HashMap中,可以有一个或多个键所对应的值为null。当get()方法返回null值时,即可以表示 HashMap中没有该键,也可以表示该键所对应的值为null。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键, 而应该用containsKey()方法来判断。
Hashtable代码如下
结果输出
80
70
60
50
90
****false
****true
注:因为Hashtable不允许null键和null值,所以如果去掉代码中的任意一行注释,会出现异常:java.lang.NullPointerException
-------------------------------------------------------------------------
HashMap代码如下:
输入结果如下:
****false
****true
null=Empty
用户4=70
用户3=60
用户5=80
Null=null
用户2=50
用户1=90
注:因为HashMap允许null键和null值,所以不会出现异常,但是相同的键值就会出现第二次覆盖第一次的结果,所以////////////此行键值对不存在
同步HashMap代码示例:
2.hashTable同步的,而HashMap是非同步的,可以使用Colletcions进行同步
Map Collections.synchronizedMap(Map m);效率上HashMap比Hashtable要高。
3.hashMap允许空键值,而hashTable不允许。
4.HashTable不允许null值(key和value都不可以),HashMap允许null值(key和value都可以)。
其实在编译期不会有任何的不一样,会照样执行,只是在运行期的时候Hashtable中设置的话回出现空指针异常
5.在HashMap中,可以有一个或多个键所对应的值为null。当get()方法返回null值时,即可以表示 HashMap中没有该键,也可以表示该键所对应的值为null。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键, 而应该用containsKey()方法来判断。
Hashtable代码如下
Hashtable h=new Hashtable(); h.put("用户1",new Integer(90)); h.put("用户2",new Integer(50)); h.put("用户3",new Integer(60)); h.put("用户4",new Integer(70)); h.put("用户5",new Integer(80)); // h.put("Null",null); // h.put(null,"Null"); // h.put(null,"Empty"); Enumeration e=h.elements(); while(e.hasMoreElements()){ System.out.println(e.nextElement()); } System.out.println("****"+h.containsKey(new String("用户8"))); System.out.println("****"+h.containsValue(new Integer(60)));
结果输出
80
70
60
50
90
****false
****true
注:因为Hashtable不允许null键和null值,所以如果去掉代码中的任意一行注释,会出现异常:java.lang.NullPointerException
-------------------------------------------------------------------------
HashMap代码如下:
HashMap h = new HashMap(); h.put("用户1",new Integer(90)); h.put("用户2",new Integer(50)); h.put("用户3",new Integer(60)); h.put("用户4",new Integer(70)); h.put("用户5",new Integer(80)); h.put("Null",null); h.put(null,"Null");//////////////// h.put(null,"Empty"); System.out.println("****"+h.containsKey(new String("用户8"))); System.out.println("****"+h.containsValue(new Integer(60))); Iterator e=h.entrySet().iterator(); while(e.hasNext()){ System.out.println(e.next()); }
输入结果如下:
****false
****true
null=Empty
用户4=70
用户3=60
用户5=80
Null=null
用户2=50
用户1=90
注:因为HashMap允许null键和null值,所以不会出现异常,但是相同的键值就会出现第二次覆盖第一次的结果,所以////////////此行键值对不存在
同步HashMap代码示例:
import java.util.Collections; import java.util.HashMap; import java.util.Hashtable; import java.util.Map; public class TableMap { public static void main(String... strings) { Map<Integer, Integer> map = Collections.synchronizedMap(new HashMap<Integer, Integer>());//为hashmap加上同步 Hashtable<Integer, Integer> table = new Hashtable<Integer, Integer>(); long before = System.currentTimeMillis(); add(map); System.out.println("add map time=" + (System.currentTimeMillis() - before)); before = System.currentTimeMillis(); add(table); System.out.println("add table time=" + (System.currentTimeMillis() - before)); before = System.currentTimeMillis(); get(map); System.out.println("get map time=" + (System.currentTimeMillis() - before)); before = System.currentTimeMillis(); get(table); System.out.println("get table time=" + (System.currentTimeMillis() - before)); } public static void add(Map<Integer, Integer> map) { for (int i = 0; i < 300000; i++) { map.put(i, i); } } public static void get(Map<Integer, Integer> map) { for (int i = 0; i < 300000; i++) { map.get(i); } } }
发表评论
-
(转)Spring声明式事务配置详解
2013-11-11 16:45 1786Spring声明式事务功能应该是大家应用Spring中使用的最 ... -
(转)Java几款性能分析工具的对比
2013-11-01 14:26 981来源:http://www.javaweb.cc/langua ... -
HashMap的遍历
2013-11-01 14:15 8261、新建一个HashMap Map<Integer , ... -
java将汉子转换成汉语拼音
2013-11-01 13:51 904import net.sourceforge.pinyin4j ... -
Spring加载properties文件的两种方式
2013-10-31 10:05 0在spring中可以通过下面的方式将配置文件中的项注入到配置中 ... -
动态加载spring .xml中的bean对象
2013-10-30 15:27 0在java中如何取得spring.xml中加载的bean对象? ... -
(转)Spring mvc+hibernate+freemarker(实战)
2013-10-28 19:40 920http://zz563143188.iteye.com/bl ... -
(转)Java之美[从菜鸟到高手演变]系列之博文阅读导航
2013-10-28 17:00 1671Java之美[从菜鸟到高手演变]系列之博文阅读导航 http: ... -
(转)openssl 制作证书和签名java方法
2013-10-28 15:03 0Win32OpenSSL_Light-0_9_8k.exe ... -
(转)面向接口编程详解
2013-10-25 12:34 5老文章,自己学习。 面向接口编程详解(一) http://w ... -
(转)Java架构师之路:JAVA程序员必看的15本书
2013-10-08 18:24 0作为Java程序员来说,最 ... -
Java获取CPU ID和磁盘ID
2013-09-25 20:18 0原文链接:http://www.rgagnon.com/jav ... -
Java编程之备用程序段
2013-09-25 14:57 0记录一些程序段,供日常备用,持续增加中…… 1. Java中 ... -
(转)Java编程之AOP
2013-09-25 14:45 0链接: http://hw19886200.iteye.com ... -
Java编程之性能优化
2013-09-25 14:28 734最近的机器内存又爆满 ... -
使用axis2传输附件
2013-09-25 10:40 1013服务端Service文件: import java.io. ... -
Java应用程序项目打包成exe文件
2013-09-23 09:16 01.程序打包 首先将程序打成Jar包,打包命 ... -
(转)Java事务处理类型及差异总结
2013-09-18 13:54 1574一、什么是Java事务 ... -
JAVA文件_加密
2013-09-13 16:09 0import java.awt.*; import java ... -
(转)Java 实现Rsa 加密
2013-09-13 16:08 0import java.io.*; public class ...
相关推荐
hashmap与hashtable区别 主要是应用于存值的数值对
初级程序员面试经常问道的问题,HashMap与HashTable区别,希望有帮助
HashMap底层实现原理HashMap与HashTable区别HashMap与HashSet区别。HashMap、HashTable和HashSet是Java中常用的数据结构,它们的底层实现原理以及区别如下:HashMap底层实现原理: HashMap基于哈希表(HashTable)...
记得刚毕业那会准备面试,看过不少面试题,里面有个说出HashMap和HashTable不同的题目,我那会面试的时候也遇到不少次这个问题,还隐约记得当时的回答是这样的: HashTable是比较旧的版本;HashTable是线程安全的,...
hashMap和hashTable的区别,大家可以下载学习学习。
HashTable不支持空键值对! 而HashMap支持空键值对!
hashmap和hashtable的区别 HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的分别。主要的区别有:线程安全性,同步(synchronization),以及速度。 1. HashMap几乎可以等价于Hashtable,...
(多选)有关hashMap跟hashTable的区别,说法正确的是? A. HashMap和Hashtable都实现了Map接口 B. HashMap是非synchronized,而Hashtable是synchronized C. HashTable使用Enumeration,HashMap使用Iterator D. ...
NULL 博文链接:https://qiaolevip.iteye.com/blog/2094447
hashmap和hashtable的区别
Java集合专题总结:HashMap 和 HashTable 源码学习和面试总结
HashMap和HashTable区别共2页.pdf.zip
hashMap和Hashtable的区别1
HashMap,HashTable,LinkedHashMap,TreeMap的区别
11.HashMap和HashTable的区别.avi
本文主要介绍HashMap 和 Hashtable的区别,这里整理了相关资料并详细介绍了HashMap 和 Hashtable的区别及其工作原理和使用方法,有需要的朋友可以看一下
HashMap和Hashtable的区别Java开发Java经验技巧共2页.pdf.zip
今天小编就为大家分享一篇关于HashMap和HashTable底层原理以及常见面试题,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
以下是对java中ArrayList与Vector的区别以及HashMap与Hashtable的区别进行了详细的解析。需要的朋友可以过来参考下
Java面试题11.HashMap和HashTable的区别.mp4