HashTable的应用非常广泛,HashMap是新框架中用来代替HashTable的类,也就是说建议使用HashMap,不要使用HashTable。可能你觉得HashTable很好用,为什么不用呢?这里简单分析他们的区别。 
1.HashTable的方法是同步的,HashMap未经同步,所以在多线程场合要手动同步HashMap这个区别就像Vector和ArrayList一样。

2.HashTable不允许null值(key和value都不可以),HashMap允许null值(key和value都可以)。

3.HashTable有一个contains(Object value),功能和containsValue(Object value)功能一样。

4.HashTable使用Enumeration,HashMap使用Iterator。

以上只是表面的不同,它们的实现也有很大的不同。

5.HashTable中hash数组默认大小是11,增加的方式是 old*2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数。

6.哈希值的使用不同,HashTable直接使用对象的hashCode,代码是这样的:
int hash = key.hashCode();
int index = (hash & 0x7FFFFFFF) % tab.length;
而HashMap重新计算hash值,而且用与代替求模:
int hash = hash(k);
int i = indexFor(hash, table.length);

static int hash(Object x) {
  int h = x.hashCode();

  h += ~(h << 9);
  h ^= (h >>> 14);
  h += (h << 4);
  h ^= (h >>> 10);
  return h;
}
static int indexFor(int h, int length) {
  return h & (length-1);
}
以上只是一些比较突出的区别,当然他们的实现上还是有很多不同的,比如
HashMap对null的操作

java--HashMap与Hashtable的区别相关推荐

  1. java HashMap 与HashTable的区别

    HashMap 与HashTable的区别 HashMap与Hashtable的区别是面试中经常遇到的一个问题.这个问题看似简单,但如果深究进去,也能了解到不少知识.本文对两者从来源,特性,算法等多个 ...

  2. Java HashMap和Hashtable的区别

    HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable ...

  3. Java——集合(HashMap与Hashtable的区别)

    * HashMap和Hashtable的区别* 共同点:* 底层都是哈希算法,都是双列集合* 区别:* 1,HashMap是线程不安全的,效率高* Hashtable是线程安全的,效率低 * 2,Ha ...

  4. JAVA面试题:HashMap和Hashtable的区别

    HashMap和Hashtable的区别 1.共同点:都是双列集合,底层都是哈希算法 2.区别: * 1.HashMap是线程不安全的,效率高,JDK1.2版本 * Hashtable是线程安全的,效 ...

  5. JAVA 映射HashMap和HashTable的区别和实用

    JAVA 映射HashMap和HashTable的区别和实用 /*  * @author Mr liu  *   * 基本格式:HashMap<key,vaule>  * 面试题  * H ...

  6. HashMap和Hashtable的区别--List,Set,Map等接口是否都继承自Map接口--Collection和Collections的区别...

    面试题: 1.HashMap和Hashtable的区别?HashMap:线程不安全,效率高,键和值都允许null值Hashtable:线程安全,效率低,键和值都不允许null值ArrayList代替V ...

  7. 18.集合框架(Map集合,HashMap和Hashtable的区别,Collections(集合工具类),集合练习,模拟斗地主(洗牌,发牌,看牌))

    1.Map集合概述和特点 1.需求:    根据学号获取学生姓名 2.Map接口概述     查看API可以知道:     将键映射到值的对象     一个映射不能包含重复的键     每个键最多只能 ...

  8. hashmap的特性?HashMap底层源码,数据结构?Hashmap和hashtable ConcurrentHashMap区别?

    1.hashmap的特性? 允许空键和空值(但空键只有一个,且放在第一位) 元素是无序的,而且顺序会不定时改变 key 用 Set 存放,所以想做到 key 不允许重复,key 对应的类需要重写 ha ...

  9. Java HashMap与Hashtable数据结构和特点+HashSet简述

    Java HashMap与Hashtable数据结构和特点+HashSet简述 1.HashMap HashMap就是基于数组和链表的数据结构:JDK1.7使用 数组+单向链表:JDK1.8使用 数组 ...

  10. 高薪程序员面试题精讲系列36之说说HashMap与HashTable的区别有哪些?

    一. 面试题及剖析 1. 今日面试题 HashMap与HashTable的区别有哪些? hash一致性算法了解吗?原理是什么?底层怎么实现的? ....... 2. 题目剖析 今天这道题目,考察的还是 ...

最新文章

  1. SnackBar使用注意事项
  2. EXPLAIN PLAN获取SQL语句执行计划
  3. linux 源码编译upx 压缩软件
  4. 以太坊智能合约开发:让合约接受转账
  5. 计算机辅助普通话水平测试评分办法,江苏省计算机辅助普通话水平测试评分细则...
  6. mysql平台workb_MySQL 总结
  7. iOS开发:iPhone6、6 plus适配
  8. 阿里云谦大佬:时间精力有限的情况下如何高效学习前端?
  9. 不同国家的视力表也不一样!| 今日趣图
  10. Python 3.5 正式退役,不再受支持
  11. java排队系统模型,排队论模型(三):M / M / s/ s 损失制排队模型
  12. CentOS 6.5 安装Redis并设置开机自启动
  13. 第四十七题 UVA437 巴比伦塔 The Tower of Babylon
  14. 【BDWP不限速小妙招】真测有效
  15. 微信小程序:Picker-View与Picker-View-column的使用
  16. git使用commit命令报错(please tell me who are you)
  17. 有赚一亿的欲望,却只有一天的耐心。
  18. 局域网测速iperf3
  19. JPG图片压缩成PNG图片怎么压缩,压缩的方法
  20. Ubuntu Desktop - gnome-calculator (计算器)

热门文章

  1. Django-5.1 模型层 单表操作
  2. 关于几种编码的那些事
  3. POJ 3553 Light Switching Game 博弈论 nim积 sg函数
  4. Caffe应用篇----文件格式转换
  5. sudo密码一直出错
  6. Vue项目多域名跨域
  7. 给一个整数数组,找到两个数使得他们的和等于一个给定的数 target。
  8. EasyUI 分页 偶遇 问题
  9. Linux centos7 shell特殊符号、cut命令、sort_wc_uniq命令、tee_tr_split命令、shell特殊符号...
  10. ACM:动态规划,01背包问题