hashmap与hashtable最大的不同在于前者是线程不安全的,而后者是线程安全的。
问题是我们为什么要让一个线程不安全的代替线程安全的呢?他们第二个不同在于前者key和value都可以插入null,而后者不行。这个是书面上说的。
Map hashtable = new Hashtable();
hashtable.put(null, null);
但是我像上面这么写也没报错啊?
问题是我们为什么要让一个线程不安全的代替线程安全的呢?他们第二个不同在于前者key和value都可以插入null,而后者不行。这个是书面上说的。
Map hashtable = new Hashtable();
hashtable.put(null, null);
但是我像上面这么写也没报错啊?
因为你输入的是空值,Hashmap可以存在空值,所以肯定不报错!你的做法没有错误!
同时如果你还不知道错误的话,可以try .catch一下!
同步控制无疑是种浪费,不存在多线程共享此hashtable,用hashmap更合适。new Hashtable().put(null,null);会报空指针错误的!