JAVA之
Map之
Hashtable
-------------------------------------
HashMap和Hashtable区别:
1)Hashtable是同步的(线程安全,效率低),且不可使用null值作为键和值
2)HashMap是不同步的(线程不安全,效率高),且键和值都可以为null
初次之外,HashMap和Hashtable是没有区别的,HashMap用来替代Hashtable
-------------------------------------
package com.lyMapHashMap;
import java.util.HashMap;
import java.util.Hashtable;
/**
* HashMap和Hashtable的区别:
* HashMap:异步,高效,键和值都可以为null
* Hashtable:同步,低效,键和值都不可以为null
* @author Jack
*
*/
public class HashtableDemo {
public static void main(String[] args) {
// 使用HashMap可以存入null值
HashMap<String, String> hm = new HashMap<String, String>();
hm.put(null, "123");
hm.put("121", null);
hm.put("下", "xia");
System.out.println("hm: "+hm);
System.out.println("--------");
// 使用Hashtable不可以存入null值
Hashtable<String, String> ht = new Hashtable<String, String>();
ht.put(null, "123"); // 出现异常
ht.put("121", null); // 出现异常
ht.put("下", "xia");
System.out.println("ht: "+ht);
System.out.println("--------");
}
}
----------------------------
hm: {null=123, 下=xia, 121=null}
--------
Exception in thread "main" java.lang.NullPointerException
at java.util.Hashtable.put(Hashtable.java:399)
at com.lyMapHashMap.HashtableDemo.main(HashtableDemo.java:30)
·····································