HashMap與Hashtable的區別

 

兩者的區別主要集中以下幾個方面:

1.key是否允許為空

码报开奖结果本期 www.iwqgw.icu HashMap允許key為null,Hashtable不允許key為null。

2.value是否允許為空

HashMap允許value為空,Hashtbale不允許value為null。

3.線程是否安全

HashMap線程不安全,Hashtable線程安全。

4.Hashtable部分源碼:

//使用了同步機制,線程安全
public synchronized V put(K key, V value) {
        // Make sure the value is not null
        if (value == null) {//value不允許為null
            throw new NullPointerException();
        }

        // Makes sure the key is not already in the hashtable.
        Entry<?,?> tab[] = table;
        int hash = key.hashCode();//key不能為null
        int index = (hash & 0x7FFFFFFF) % tab.length;
        @SuppressWarnings("unchecked")
        Entry<K,V> entry = (Entry<K,V>)tab[index];
        for(; entry != null ; entry = entry.next) {
            if ((entry.hash == hash) && entry.key.equals(key)) {
                V old = entry.value;
                entry.value = value;
                return old;
            }
        }

        addEntry(hash, key, value, index);
        return null;
    }

 

 來源:itnose

上一篇: spring MVC如何獲取session傳值到前臺

下一篇: Java基礎--String類(二)

分享到: 更多
炸金花两个人怎么打套 时时彩后三乘以0.618 抢庄牛牛牛安卓版下载 单机游戏斗地主单机版 筋斗云足球直播 pk10个人投注心得分享 广东时时11选五技巧稳赚方法 七星彩选号超准方法 三分pk10稳赚技巧方案 网上购彩网站 双色球几点截止投注 二人斗地主游戏在线玩 吉林时时专家计划 11选5稳赚任选8万能码 玩足彩月入上万的人多吗 时时彩组六720注号码