Prompts-MCP 686 skills · ai / design / design-pattern / framework / fundamentals / habit / lang / tech-selection /mcp/sse
fundamentals fundamentals/collection-internals/index.md medium

fundamentals-collection-internals-index

集合源码原理服务于实践决策 — HashMap 初始容量、并发 Map 选型、红黑树与负载因子。Use when 预估 HashMap 容量 / 选并发 Map / 调负载因子或纠结链表转树时。

子项索引

子项 一句话
collection-internals-hashmap-sizing skill HashMap 为何要预设初始容量 — 默认 16 装大量元素会反复扩容 rehash,已知大小时 new HashMap(expectedSize/0.75f+1)
collection-internals-concurrent-map-choice skill 并发 Map 三选一原理 — ConcurrentHashMap(CAS+桶级锁)吞吐远高于全表锁的 Collections.synchronizedMap 和已过时的 Hashtable
collection-internals-treeify-and-loadfactor skill HashMap 链表何时转红黑树(链表>8 且数组容量≥64,否则先扩容)与负载因子 0.75 的时间/空间取舍

Collection Internals · 子项索引

内功定位:原理 → 实践决策,不是八股背诵。每条都用「源码机制」回答一个「该怎么写代码」的问题。 这里讲为什么这样写;具体用哪个集合实现的选型见 lang/java/collections/,不重复。

按你正在做的事下钻:

你在做什么 进哪个
new 一个已知大致元素数的 HashMap,想避免它反复扩容 rehash hashmap-sizing
Map 要在多线程间共享读写,在 ConcurrentHashMap / synchronizedMap / Hashtable 之间选 concurrent-map-choice
纠结负载因子怎么设、链表什么时候转红黑树、为什么有时扩容而不转树 treeify-and-loadfactor