java--HashMap与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的区别相关推荐
- java HashMap 与HashTable的区别
HashMap 与HashTable的区别 HashMap与Hashtable的区别是面试中经常遇到的一个问题.这个问题看似简单,但如果深究进去,也能了解到不少知识.本文对两者从来源,特性,算法等多个 ...
- Java HashMap和Hashtable的区别
HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable ...
- Java——集合(HashMap与Hashtable的区别)
* HashMap和Hashtable的区别* 共同点:* 底层都是哈希算法,都是双列集合* 区别:* 1,HashMap是线程不安全的,效率高* Hashtable是线程安全的,效率低 * 2,Ha ...
- JAVA面试题:HashMap和Hashtable的区别
HashMap和Hashtable的区别 1.共同点:都是双列集合,底层都是哈希算法 2.区别: * 1.HashMap是线程不安全的,效率高,JDK1.2版本 * Hashtable是线程安全的,效 ...
- JAVA 映射HashMap和HashTable的区别和实用
JAVA 映射HashMap和HashTable的区别和实用 /* * @author Mr liu * * 基本格式:HashMap<key,vaule> * 面试题 * H ...
- HashMap和Hashtable的区别--List,Set,Map等接口是否都继承自Map接口--Collection和Collections的区别...
面试题: 1.HashMap和Hashtable的区别?HashMap:线程不安全,效率高,键和值都允许null值Hashtable:线程安全,效率低,键和值都不允许null值ArrayList代替V ...
- 18.集合框架(Map集合,HashMap和Hashtable的区别,Collections(集合工具类),集合练习,模拟斗地主(洗牌,发牌,看牌))
1.Map集合概述和特点 1.需求: 根据学号获取学生姓名 2.Map接口概述 查看API可以知道: 将键映射到值的对象 一个映射不能包含重复的键 每个键最多只能 ...
- hashmap的特性?HashMap底层源码,数据结构?Hashmap和hashtable ConcurrentHashMap区别?
1.hashmap的特性? 允许空键和空值(但空键只有一个,且放在第一位) 元素是无序的,而且顺序会不定时改变 key 用 Set 存放,所以想做到 key 不允许重复,key 对应的类需要重写 ha ...
- Java HashMap与Hashtable数据结构和特点+HashSet简述
Java HashMap与Hashtable数据结构和特点+HashSet简述 1.HashMap HashMap就是基于数组和链表的数据结构:JDK1.7使用 数组+单向链表:JDK1.8使用 数组 ...
- 高薪程序员面试题精讲系列36之说说HashMap与HashTable的区别有哪些?
一. 面试题及剖析 1. 今日面试题 HashMap与HashTable的区别有哪些? hash一致性算法了解吗?原理是什么?底层怎么实现的? ....... 2. 题目剖析 今天这道题目,考察的还是 ...
最新文章
- SnackBar使用注意事项
- EXPLAIN PLAN获取SQL语句执行计划
- linux 源码编译upx 压缩软件
- 以太坊智能合约开发:让合约接受转账
- 计算机辅助普通话水平测试评分办法,江苏省计算机辅助普通话水平测试评分细则...
- mysql平台workb_MySQL 总结
- iOS开发:iPhone6、6 plus适配
- 阿里云谦大佬:时间精力有限的情况下如何高效学习前端?
- 不同国家的视力表也不一样!| 今日趣图
- Python 3.5 正式退役,不再受支持
- java排队系统模型,排队论模型(三):M / M / s/ s 损失制排队模型
- CentOS 6.5 安装Redis并设置开机自启动
- 第四十七题 UVA437 巴比伦塔 The Tower of Babylon
- 【BDWP不限速小妙招】真测有效
- 微信小程序:Picker-View与Picker-View-column的使用
- git使用commit命令报错(please tell me who are you)
- 有赚一亿的欲望,却只有一天的耐心。
- 局域网测速iperf3
- JPG图片压缩成PNG图片怎么压缩,压缩的方法
- Ubuntu Desktop - gnome-calculator (计算器)
热门文章
- Django-5.1 模型层 单表操作
- 关于几种编码的那些事
- POJ 3553 Light Switching Game 博弈论 nim积 sg函数
- Caffe应用篇----文件格式转换
- sudo密码一直出错
- Vue项目多域名跨域
- 给一个整数数组,找到两个数使得他们的和等于一个给定的数 target。
- EasyUI 分页 偶遇 问题
- Linux centos7 shell特殊符号、cut命令、sort_wc_uniq命令、tee_tr_split命令、shell特殊符号...
- ACM:动态规划,01背包问题