博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HashSet随笔
阅读量:6832 次
发布时间:2019-06-26

本文共 1295 字,大约阅读时间需要 4 分钟。

HashSet说白了其实就是HashMap.Entry[capacity], HashMap.Entry实现的链表 相当于LinkedList.

参数loadFactor对其性能有很大影响.

capacity: the number of buckets.

initialCapacity: Default value is 16, 用于初始化数组的槽位, capacity永远 >= initialCapacity 并且capacity永远为2的n次幂 最大值为1<<30.

因为源码已经解释的很清楚了.

1 if (initialCapacity < 0) 2             throw new IllegalArgumentException("Illegal initial capacity: " + 3                                                initialCapacity); 4         if (initialCapacity > MAXIMUM_CAPACITY) 5             initialCapacity = MAXIMUM_CAPACITY; 6         if (loadFactor <= 0 || Float.isNaN(loadFactor)) 7             throw new IllegalArgumentException("Illegal load factor: " + 8                                                loadFactor); 9 10         // Find a power of 2 >= initialCapacity11         int capacity = 1;12         while (capacity < initialCapacity)13             capacity <<= 1;14 15         this.loadFactor = loadFactor;16         threshold = (int)(capacity * loadFactor);17         table = new Entry[capacity];

loadFactor: Default value is 0.75, 影响resize容器的频率与内存占用, 越小则需要更多内存占用, 越大则增加get()与put()/putAll()的系统开销.

threshold: 始终为当前capacity*loadFactor, 每次添加数据时会判断size()是否 >= threshold, 大于则resize(). resize()的同时会再次计算新的threshold值.

 

转载于:https://www.cnblogs.com/davidwang/archive/2012/12/18/2823696.html

你可能感兴趣的文章
OpenGL Render On Window Process
查看>>
架构设计中的方法学——迭代设计
查看>>
【技术贴】最新唯一解决:未能创建视频预览,请检查设备连接,确定没有其他应用程序或用户使用该设备...
查看>>
SQL Server中数据库文件的存放方式,文件和文件组
查看>>
使用delphi 开发多层应用(八)客户端更新数据到kbmMW服务器
查看>>
HDU_3062 Party (2-SAT)
查看>>
dynamic_shift_reg SRL16E
查看>>
尝试用微博记录 SQL Server 2012开发者训练营笔记
查看>>
.Net中的5种事务总结
查看>>
为什么 Git 比 SVN 好
查看>>
关于Qt的MVC模型思想(转载)
查看>>
Vagrant支持Amazon AWS和Rackspace
查看>>
JNDI全攻略(二)(转)
查看>>
POJ1463:Strategic game(树形DP)
查看>>
SPOJ LCS(Longest Common Substring-后缀自动机-结点的Parent包含关系)
查看>>
Tuning 05 Sizing other SGA Structure
查看>>
用 Qt Creator 开发非 Qt 的 C/C++ 程序
查看>>
Android-Cannot merge new index 66195 into a non-jumbo instruction的解决的方法
查看>>
解决 com.sun.*包导入错误
查看>>
【WP 8.1开发】如何动态生成Gif动画
查看>>