Java容器解析系列(15) HashTable Dictionary & Properties
HashTable的實(shí)現(xiàn)原理與HashMap沒(méi)有什么區(qū)別;
其與HashMap的主要區(qū)別如下:
- 添加進(jìn)入jdk時(shí)間:HashTable在jdk1.0時(shí)添加,HashMap在jdk1.2時(shí)添加;
- 類簽名:兩者都實(shí)現(xiàn)了Map接口,但是HashMap繼承自AbstractMap,HashTable繼承自Dictionary;
- HashMap允許key和value為null,HashTable不允許key和value為null;
- HashMap不是線程安全的,HashTable線程安全,每個(gè)方法要么是synchronized,要么被synchronized方法調(diào)用;
- HashTable可以Enumeration進(jìn)行遍歷;
- HashTable已經(jīng)不推薦使用,如果需要線程安全的
Map,可以使用Collections.synchronizedMap();
Dictionary類定義如下:
/**
*
* 保存鍵值對(duì);
* key和value均不能為null;
* 該類已被廢棄,新的實(shí)現(xiàn)應(yīng)該實(shí)現(xiàn)Map接口;
*
* @since JDK1.0
*/
public abstract class Dictionary<K, V> {
public Dictionary() {
}
abstract public int size();
abstract public boolean isEmpty();
// 返回所有 key 的Enumeration
abstract public Enumeration<K> keys();
// 返回所有 value 的Enumeration
abstract public Enumeration<V> elements();
abstract public V get(Object key);
abstract public V put(K key, V value);
abstract public V remove(Object key);
}
HashTable其實(shí)還有一個(gè)子類:Properties.用于保存和讀取key-value屬性,并可以將屬性持久化到屬性文件中;
關(guān)于Properties,可以查看Java中Properties類的操作和java讀取Properties文件的六種方法
Let's go change the world,or changed by the world
posted on 2019-05-28 15:13 公子姓王 閱讀(262) 評(píng)論(0) 收藏 舉報(bào)
浙公網(wǎng)安備 33010602011771號(hào)