加载因子是表示Hsah表中元素的填满的程度.若:加载因子越大,填满的元素越多,好处是,空间利用率高了,但:冲突的机会加大了.反之,加载因子越小,填满的元素越少,好处是:冲突的机会减小了,但:空间浪费多了.冲突的机会越大,则查找的成本越高.反之,查找的成本越小.因而,查找时间就越小.因此,必须在 "冲突的机会"与"空间利用率"之间寻找一种平衡与折衷. 这种平衡与折衷本质上是数据结
原创 2017-03-25 16:21:02
1537阅读
对财务系统没有经验,基于自己有限的认识记录一下对Accounting Model的理解 1. 账务模式基本模型:    Account: 如果是指个人理财方面(分析模式书中的示例场景),当译做账号;如果指财务会计方面,当译做科目Entry: 交易条目Accounting Transaction: 交易简单ER设计示例:    加了个"科目
转载 2024-03-07 13:34:38
76阅读
easy-excel批量导出前言最近遇到个用户数据批量导出excel的需求,第一次看到这个需求大家第一时间想到的应该大多都是easy-excel这个框架吧,哈哈,我第一时间想到的也是这个框架。 但是对于少量的数据,比如有10个用户这样的数据肯定没有啥太大的问题,但是对于百万级数据可能就会有问题,总不能一次性吧100w数据从数据库里面查出来吧,这无疑是sql炼狱,同时也面临着oom的风险,面对一个线
转载 2024-09-07 22:01:24
93阅读
一、何为加载因子?加载因子是表示Hsah表中元素的填满的程度.若
转载 2023-03-14 15:07:19
76阅读
今天阅读代码,突然看到这个方法:查阅资料后了解到:说明:1.如果不超过12个键值对,可以不设置2.如果超出,按initialCapacity = (需要存储的元素个数 / 负载因子) + 1公式计算后设置 3.官方的建议是initailCapacity设置成2的n次幂正例:initialCapacity = (需要存储的元素个数 / 负载因子) + 1。注意负载因子(即loader factor)
原创 2024-04-08 16:01:43
303阅读
HashMap的初始容量(initialCapacity)和装载因子(loadFactor) 按HashMap源码里的那种重构方法,如果reHash过多,显然会影响性能。所以为了防止过多的reHash,我们需要自己配置HashMap的装载因子loadFactor和初始的table容量capacity
转载 2017-08-15 11:31:00
132阅读
2评论
约定 约定前面的数组结构的每一个格格称为桶 约定桶后面存放的每一个数据称为bin bin这个术语来自于JDK 1.8的HashMap注释。 size size表示HashMap中存放KV的数量(为链表和树中的KV的总和)。 capacity capacity译为容量。capacity就是指HashM
转载 2018-07-06 15:20:00
195阅读
JDK1.8源码构造函数public ConcurrentHashMap(int initialCapacity, float loadFactor, int concurrencyLevel) { if (!(loadFactor > 0.0f) || initialCapacity < 0 ||
原创 2022-08-06 01:11:56
151阅读
构造函数publicHashtable(intinitialCapacity,floatloadFactor){if(initialCapacity<0)thrownewIllegalArgumentException("IllegalCapacity:"+initialCapacity);if(loadFactor<=0||Float.isNaN(loadFactor))thrown
原创 2018-10-27 22:33:03
275阅读
C++的hash表中有一个负载因子loadFactor,当loadFactor<=1时,hash表查找的期望复杂度为O(1).因此,每次往hash表中添加元素时,我们必须保证是在loadFactor <1的情况下,才能够添加。 因此,当Hash表中loadFactor==1时,Hash就需要进行re ...
isNaN方法在阅读HashMap源码时,发现其有参构造方法中有个Float.isNaN(loadFactor) 方法public HashMap(int initialCapacity, float loadFactor) { if (initialCapacity < 0) throw new IllegalArgumentException("I
转载 2024-06-01 04:46:19
44阅读
扩容时机:Hash Map:要在某个临界点进行扩容处理,该临界点就是HashMap中元素的数量在数值上等于threshold(table数组长度*加载因子)Dict:当每次新增键值对的时 , 会检测 负载因子(LoadFactor) , 判断以下两种条件会触发扩容 :LoadFactor >= 1 , 并且 Redis 没有进行持久化LoadFactor > 5HashMap
1 首先看构造函数 共四个,看一个就够了如下: public HashMap() { this .loadFactor = 0.75F ; }  this .loadFactor为增长因子,默认为0.75 2 往下看put()方法: public V put(K var1 , V var2) { return this . putV
原创 2023-03-17 16:07:27
137阅读
HashMap是用哈希表(直接一点可以说数组加单链表)+红黑树实现的map类。HashMap构造器static final float DEFAULT_LOAD_FACTOR = 0.75f; final float loadFactor; public HashMap() { this.loadFactor = DEFAULT_LOAD_FACTOR; // all other fiel
转载 2024-10-18 08:16:38
23阅读
HashMap除了有无参的构造方法(默认会构造出一个默认为16的数组及loadFactor=0.75的HashMap)外,也可以在New  HaspMap的时候指定这两个值。原构造方法声明如下:HashMap(int initialCapacity, float loadFactor) Constructs an empty HashMap with the spe
转载 2023-09-18 12:20:11
154阅读
HashMapHashSet() loadFactor默认0.75,threshold为12并创建一个大小为16的Entry对象数组可调用另外两个构造器控制初始容量值,loadFactor数组大小由如下决定:int capacity = 1;while(capacity < initialCapacity) capacity <<= 1;capacity才是创
构造函数publicLinkedHashMap(intinitialCapacity,floatloadFactor){super(initialCapacity,loadFactor);accessOrder=false;}publicLinkedHashMap(intinitialCapacity){super(initialCapacity);accessOrder=false;}publi
原创 2018-10-28 00:14:35
336阅读
扩容机制 1.什么时候才需要扩容 在首次调用put方法的时候,初始化数组table 当HashMap中的元素个数超过数组大小(数组长度)*loadFactor(负载因子)时,就会进行数组扩容,loadFactor的默认值(DEFAULT_LOAD_FACTOR)是0.75,这是一个折中的取值。也就是
转载 2021-01-19 13:47:00
686阅读
2评论
public HashMap(int initialCapacity, float loadFactor) { // 对初始容量的值判断 if (initialCapacity < 0) throw new IllegalArgumentException("Illegal initial capacity: " + initialCapacity); if (initialCap
JDK1.8源码构造函数public HashMap(int initialCapacity, float loadFactor) { if (initialCapacity < 0) throw new IllegalArgumentException("Illegal initial capacity: " +
原创 2022-08-06 01:11:43
120阅读
  • 1
  • 2
  • 3
  • 4
  • 5