Java HashMap、HashTable详解
来源:互联网 发布:linux ftp登录 编辑:程序博客网 时间:2024/06/06 18:09
Map是一个映射接口,其中的每个元素都是一个key-value键值对,同样抽象类AbstractMap通过适配器模式实现了Map接口中的大部分函数,TreeMap、HashMap、WeakHashMap等实现类都通过继承AbstractMap来实现,另外,不常用的HashTable直接实现了Map接口,它和Vector都是JDK1.0就引入的集合类。
HashMap:
1、HashMap中key和value都允许为null
2、线程不安全。为实现线程安全,可以Collections.synchronizedMap()方法来获取一个线程安全的集合
3、HashMap在不指定容量的情况下的默认容量为16,HashMap底层数组的容量要求一定为2的整数次幂
4、加载因子是哈希表在其容量自动增加之前可以达到多满的一种尺度,当哈希表中的条目数超出了加载因子与当前容量的乘积时,则要对该哈希表进行 resize 操作(即扩容)。默认为0.75
5、如果key为null,则直接从哈希表的第一个位置table[0]对应的链表上查找。如果key不为null,则先求的key的hash值,根据hash值找到在table中的索引。
HashTable:
1、HashTable中key和value都不允许为null
2、线程安全的,用于多线程下
3、HashTable在不指定容量的情况下的默认容量为11,HashTable不要求底层数组的容量一定要为2的整数次幂
共同点:
1、二者的存储结构(哈希表--》数组+链表)和解决冲突的方法都是相同的。
不同点:
1、两者计算hash的方法不同,Hashtable计算hash是直接使用key的hashcode对table数组的长度直接进行取模
2、线程安全性
3、初始化容量
4、HashMap是对Map接口的实现,HashTable实现了Map接口和Dictionary抽象类
5、HashMap可以使用null作为key,而Hashtable则不允许null作为key
- Java HashMap、HashTable详解
- java HashMap 与 Hashtable 详解
- Java集合类HashMap、HashTable、TreeMap详解
- 详解HashMap和HashTable
- Java Hashmap 和 Hashtable
- Java Hashtable、Hashmap
- java HashMap 和HashTable
- Java HashMap HashTable
- java-Hashtable HashMap
- Java:HashMap、HashTable
- java中hashTable和hashMap的Key的详解
- HashMap与HashTable比较详解
- HashMap与HashTable深入详解
- HashMap、HashSet和HashTable详解
- HashMap详解,与HashTable区别
- Java的HashMap和HashTable
- java中的hashmap和hashtable
- Java的HashMap和HashTable
- 数据结构——离散事件模拟
- iOS webview与Js的交互。以及修改cookie、header头
- Access-Control-Allow-Origin与跨域
- Oracle与Sql Serer的链接桥梁之透明网关的部署与配置详解(二)安装GateWays
- 关于Monkey的一切都在这里
- Java HashMap、HashTable详解
- Problems encountered during text search
- Android架构思考(模块化、多进程)(转载学习)
- Linux上部署web应用(mysql,tomcat)
- js事件冒泡和委托
- OpenCV对数极变换变换示例
- "libcudnn.so.5 cannot open shared object file: No such file or directory"
- 【排序三】交换排序(冒泡排序&&快速排序)
- CTS7.1 GTS7.1 详细测试步骤