栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Hashtable 与 HashMap之间的区别

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Hashtable 与 HashMap之间的区别

Hashtable 与 HashMap之间的区别:
  共同点 : 都是Map接口的实现类,底层结构都是哈希表
  异同点 :
            1.继承体系不同
            2.线程是否安全不同
                HashMap 线程不安全|不同步
                Hashtable 线程安全的|同步的
            3.扩容机制不同
                HashMap扩容机制 : 每次扩容原容量的2倍
                    int newCap = oldCap << 1
                Hashtable扩容机制 : 原容量的2倍+1
                    int newCapacity = (oldCapacity << 1) + 1;
            4.键值对数据null值的要求不同
                HashMap 可以存储null值的key与value
                Hashtable key与value都不为null

            5.计算hash值与位桶索引index的算法不同
                HashMap :
                    int hash = (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);
                    int index = (n - 1) & hash
               Hashtable :
                    int hash = key.hashCode();
                    int index = (hash & 0x7FFFFFFF) % tab.length;

     如何处理HashMap线程不安全问题:
        1.使用Hashtable
        2.使用Collections工具类中static  Map synchronizedMap(Map m) 返回由指定映射支持的同步(线程安全)映射。
        3.juc高级并发编程包 ConcurrentHashMap-> 线程安全的哈希表
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/683024.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号