inflateTable(threshold)

分析:

Hi.java

public class Hi {

    //临界值(一个值最接近2的n次幂的数,比如7的临界值为8)
int threshold; //2的30次方,01000000 00000000 00000000 00000000(最大)
static final int MAXIMUM_CAPACITY = 1 << 30; //初始容量为 16(缺省)
static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 //加载因子默认为 0.75
static final float DEFAULT_LOAD_FACTOR = 0.75f; //加载因子
final float loadFactor; //构造函数,初始化时传入了两个值:初始容量和默认加载因子
public Hi() {
this(DEFAULT_INITIAL_CAPACITY, DEFAULT_LOAD_FACTOR);
} //构造函数,接收初始容量和加载因子
public Hi(int initialCapacity, float loadFactor) { //如果初始容量小于0,则抛出异常
if (initialCapacity < 0)
throw new IllegalArgumentException("Illegal initial capacity: " +
initialCapacity); //如果初始容量大于最大容量,则初始容量还是要等于最大限量
if (initialCapacity > MAXIMUM_CAPACITY)
initialCapacity = MAXIMUM_CAPACITY; //如果加载因子小于0或为空,则抛出异常
if (loadFactor <= 0 || Float.isNaN(loadFactor))
throw new IllegalArgumentException("Illegal load factor: " +
loadFactor); //赋值类的加载因子属性为传入的加载因子,不传默认为0.75
this.loadFactor = loadFactor; //为临界值赋值,赋值为初始容量16
threshold = initialCapacity; init();
} void init() {
} //提供一个对外的方法,返回值为临界值,用来验证
public int getSize(){ //当调用getSize方法时,threshold因为被构造函数赋值,所以此时为16
System.out.println(threshold); //把threshold传入roundUpToPowerOf2,计算临界值
int size = roundUpToPowerOf2(threshold); return size;
} //计算出大于toSize最临近的2的N此方的值
private static int roundUpToPowerOf2(int number) { //稍后分析
return number >= MAXIMUM_CAPACITY
? MAXIMUM_CAPACITY
: (number > 1) ? Integer.highestOneBit((number - 1) << 1) : 1; } }

Hs.java

public class Hs {

      public static void main(String []args) {
Hi hi = new Hi();
int a = hi.getSize();
System.out.println(a);
} }

此时结果为:

F:\java>java Hs
16
16

最新文章

  1. php时间类
  2. 浅说如何制作javascript类库
  3. swift学习笔记之-属性
  4. hdu.5211.Mutiple(数学推导 &amp;&amp; 在logn的时间内求一个数的所有因子)
  5. iOS framework
  6. ReentrantLock获取锁方式解读(转)
  7. iOS网络传输Delegate不被触发的本质原因
  8. WinForm 根据屏幕分辨率自适应
  9. IOS下视频监控项目总结
  10. linux网络环境配置
  11. PHP根据概率产生随机数
  12. Objective-C马路成魔【12-分类和协议】
  13. Servlet实现文件上传(深度)(二)
  14. 毕业样本=[威尔士大学毕业证书]UWIC原件一模一样证书
  15. [20180603]Python读写csv
  16. asp。net内置委托
  17. c#读取文本并生成txt
  18. 【sping揭秘】19、关于spring中jdbctemplate中的DataSource怎么来呢
  19. div盒子水平垂直居中方法
  20. mysql常见操作语句,建表,增删改查

热门文章

  1. UIView的alpha、hidden和opaque属性之间的关系和区别
  2. TCP/IP 三次握手,温故知新
  3. [CoreOS 转载] CoreOS实践指南(一)
  4. 因默认包扫描问题导致的SpringBoot项目无法启动问题
  5. 多媒体文件格式解析之MP3
  6. 将String转换成InputStream
  7. Django 查询时间段 时间搜索 过滤
  8. mysql查询字段为null 返回0
  9. 在构造函数中使用new时的注意事项
  10. 06Vue.js快速入门-Vue组件化开发