与HashMap的比较:
- Hashtable:
- 底层是一个哈希表,是一个线程安全的集合,是单线程的集合,速度慢
- 不可以存储空值空键
- HashMap:
- 底层也是一个哈希表,是一个线程不安全的集合,是多线程的集合,速度快
- 可以存储空值空键
Hashtable和Vector集合一样,在jdk1.2.版本之后,被更先进的集合取代了——HashMap和ArrayList。
但是,Hashtable的子类Properties依然使用,Properties集合是唯一和IO流结合的集合。
举例:
import java.util.HashMap;
import java.util.Hashtable;
public class demo6HashTable {
public static void main(String[] args){
HashMap<String,String> map = new HashMap<>();
map.put(null,"aaa");
map.put("bbb",null);
map.put(null,null);
System.out.println(map);
}
}
会输出
{null=null, bbb=null}
*null与null也算主键重复,只会出现一次
再看Hashtable
Hashtable<String,String> table = new Hashtable<>();
map.put(null,"aaa");
Hashtable<String,String> table1 = new Hashtable<>();
map.put("bbb","aaa");
Hashtable<String,String> table2 = new Hashtable<>();
map.put(null,null);
会报错:空指针异常