1. StringBuffer、StringBuilder 的扩容机制

StringBuffer、StringBuilder,默认初始化是 16 个字符,默认增容为 原长度+2
→ 扩容后:2*(n+1)

代码如下:

//默认初始化大小
public StringBuilder() {super(16);
}// 默认扩容
int newCapacity = (value.length + 1) * 2;

2. ArrayList 的扩容机制

ArrayList,初始默认长度为 10 ,每次扩容是 原容量的一半
→ 扩容后:1.5*n

具体代码如下:

public ArrayList() {this(10);
} int newCapacity = (oldCapacity * 3)/2 + 1;public static native void arraycopy(Object src, int  srcPos, Object dest, int destPos, int length);

3. Vector 的扩容机制

Vector,初始默认长度为 10 ,每次扩容是 原容量的一倍
→ 扩容后:2*n

具体代码如下:

public Vector() {this(10);
} int newCapacity = (capacityIncrement > 0) ? (oldCapacity + capacityIncrement) : (oldCapacity * 2);

4. HashMap 的扩容机制

HashMap,初始默认长度为 16必须是2的次方),默认每次的扩容因子为 0.75
→ 扩容后:2*n

具体代码如下:

static final int DEFAULT_INITIAL_CAPACITY = 16;
static final float DEFAULT_LOAD_FACTOR = 0.75f;public HashMap() {this.loadFactor = DEFAULT_LOAD_FACTOR;threshold = (int)(DEFAULT_INITIAL_CAPACITY * DEFAULT_LOAD_FACTOR);table = new Entry[DEFAULT_INITIAL_CAPACITY];init();
}resize(2 * table.length);

5. HashTable 的扩容机制

HashTable,默认初始 11 ,默认每次扩容的因子为 0.75
→ 扩容后:2*n+1

具体代码如下:

public Hashtable() {this(11, 0.75f);
}int newCapacity = oldCapacity * 2 + 1;

StringBuffer、StringBuilder、ArrayList、Vector、HashMap、HashTable 的扩容机制相关推荐

  1. jdk8 HashMap初始化和扩容机制

    工作中大家讨论HashMap设置初始化容量的问题,写篇文章好好聊聊. 一.jdk8 HashMap初始化和扩容机制 以下面的代码为例 Map<String, String> map = n ...

  2. HashMap底层的扩容机制(以及2倍扩容的原因)

    文章目录 HashMap底层的扩容机制 resize扩容 resize源码 源码文字说明 HashMap底层为什么是2倍扩容? HashMap底层的扩容机制 resize扩容 HashMap会在两个地 ...

  3. OAF_开发系列17_实现OAF数组应用Vector / Hashmap / Hashtable / Arraylist(案例)

    20150506 Created By BaoXinjian 一.摘要 Vector.ArrayList和Hashtable Jashmap的异同 线性表,链表,哈希表是常用的数据结构,在进行Java ...

  4. HashMap扩容机制解读

    扩容机制 什么时候需要扩容: 当hashmap中的元素个数超过数组大小 * loadFactor(负载因子)时,就会进行数组扩容,loadFactor的默认值(DEFAULT_LOAD_FACTOR) ...

  5. java基础巩固-宇宙第一AiYWM:为了维持生计,多高(多线程与高并发)_Part9~整起(单双列集合们、ArrayList 的扩容机制、HashMap、ConcurrentHashMap )

    再进入正文之前,先看看集合相关操作的时间复杂度: 本故事源自于~ 开唠: PART0: 为什么突然蹦出集合这个玩意,就是因为咱们基础那里学的"数组"不够用~: 数组一般用来保存一组 ...

  6. 分析HashTable、HashMap、ConcurrentHashMap的结构、初始化及扩容机制

    目录 一.前沿 二.HashTable 三.HashMap Jdk1.7 Jdk1.8 四.ConcurrentHashMap Jdk1.7 Jdk1.8 五.总结 一.前沿 相信很多同学对HashT ...

  7. 浅谈 Java 字符串(String, StringBuffer, StringBuilder)

    我们先要记住三者的特征: String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 一.定义 查看 API 会发现,String ...

  8. Java 里的HashMap(HashTable) 简介.

    之前已经介绍过Java的另1个容器HashSet.  其实HashMap的存储原来跟HashSet区别不大, 可以说是HashSet的1个扩展. 一,预备知识: 哈希表 我们可以把哈希表看做是1个特别 ...

  9. Java—Map集合详解(HashMap/Hashtable/LinkedHashMap/Properties/TreeMap/WeakHashMap/IdentityHashMap/EnumMap)

    关注微信公众号:CodingTechWork,一起学习进步. Map Map集合介绍   Map(也称为字典.关联数组)是用于保存具有映射关系的数据,保存两组值,key和value,这两组值可以是任何 ...

最新文章

  1. 中国AI芯片产业发展白皮书:未来三年年均增长率超50%
  2. 安装Ubuntu16.04并安装sogoupiyin for linux
  3. container_of 用法解析
  4. 专业程序员必知必会技巧:驯服复杂代码
  5. 简单的单级下拉菜单实现
  6. 交换机是如何对数据包打标签去标签的_条形码软件如何在标签纸上套打可变条码...
  7. VS2003使用后的一点心得
  8. mfc控件随框变化(EasySize的用法,仔细看绝对有用)
  9. IPv4 和 IPv6 有什么区别
  10. c++字符串数组去重的另类思路
  11. wait会释放锁吗_漫画:如何证明sleep不释放锁,而wait释放锁?
  12. 人工智能?你需要了解的内容和AI学习路线
  13. Kvaser Memorator数据记录仪通过KVmlib配置和读取SD卡
  14. ubuntu相关软件下载
  15. 专业显卡深度学习_MacOS+AMD-eGPU打造深度学习环境 | 第2期
  16. 用ajax请求本地的json失效,通过jquery的ajax请求本地的json文件方法
  17. 联合国首席AI顾问专访:我们期望AI应该是完美的,但这永远不会
  18. 这家协同办公软件厂商,也曾如盛夏莲花般绽放
  19. Linux查看gzip文件原始大小,Linux 文件管理:Linux gzip 压缩
  20. 浏览器端可以直接运行Python了

热门文章

  1. 电脑销售渠道_“新冠”影响下,平板电脑市场再现新商机
  2. linux下1sa 密码失效,SA口令
  3. 现代操作系统:进程和线程总结
  4. jquery删除数组中的某个元素下标越界_Java数据结构和算法(二)—数组
  5. docwizard c++程序文档自动生成工具_工具用的好,老师下班早!老师的高效办公利器都在这!...
  6. win2003 ip安全策略
  7. 排序命令: sort, wc, uniq
  8. (实际开发大数据分析系统)网络爬虫获取数据与销售数据分析系统
  9. 通讯框架 t-io 学习——websocket 部分源码解析
  10. 【Django】模型层说明