• HashSet随笔


    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 >= initialCapacity
    11         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值.

  • 相关阅读:
    PostgreSQL的德哥教程
    pgbench的使用简介
    pg生成日期序列
    在Intellij IDEA 12中Tomcat无法调试
    如何使用命令行来控制IIS服务的启动和停止
    SharePoint Support Engineer 常用技术点
    测试博文写作
    C#数字进制间与字符串类型相互转换
    [转载]INNO Setup 使用笔记
    unity3d 游戏开发引擎
  • 原文地址:https://www.cnblogs.com/davidwang/p/2823696.html
Copyright © 2020-2023  润新知