几个概念
- 桶(bucket):hash表里可以存储元素的位置
- hash冲突:equals()返回false的不相等对象的hashCode()值相等,意味着一个bucket要放几个元素
- 容量(capacity):hash表中桶(bucket)的数量
- 初始化容量(initial capacity):创建一个hash表时的桶的数量,默认是16,可以指定
- 尺寸(size):当前hash表中记录的数量
- 负载因子(load factor):负载因子=size/capacity。
- 负载极限:负载因子所能达到的最大值,默认的负载极限是0.75
- rehashing:hash表的容量发生变化后,重新分配各元素在hash表中的位置
机制与性能:
- 同一个bucket里的元素,按链表形式存储
- 当负载因子达到负载极限时,capacity会自动成倍增加,并重新分配已有元素的存储位置,这会导致性能下降,如果要一次存入大量元素,应指定capacity,防止频繁的rehashing降低性能
- 负载极限小,占用的内存空间大,能提高数据的查询性能,
- 负载极限大,占用的内存空间小,但会增加查询数据的时间开销,不只是get,put也需要查询,
相关文章
- 集合Map,HashMap、TreeMap+JAVA学习笔记-DAY18
- Java 学习笔记 两大集合框架Map和Collection
- java集合学习(2):Map和HashMap
- 0014 Java学习笔记-集合-HashMap集合
- JavaSE入门学习36:Java集合框架之Set接口及其实现类HashSet和TreeSet
- Java学习笔记总结篇之集合类和多线程
- Java集合专题总结(1):HashMap 和 HashTable 源码学习和面试总结
- java collections 集合基础学习 ArrayList,LinkedList, HashSet, TreeSet, HashMap, Stack,Queue,PriorityQueue
- java collections 集合基础学习 ArrayList,LinkedList, HashSet, TreeSet, HashMap, Stack,Queue,PriorityQueue
- [原创]java WEB学习笔记98:Spring学习---Spring Bean配置及相关细节:如何在配置bean,Spring容器(BeanFactory,ApplicationContext),如何获取bean,属性赋值(属性注入,构造器注入),配置bean细节(字面值,包含特殊字符,引用bean,null值,集合属性list map propert),util 和p 命名空间