在 Java 里,Set 本身是一个接口,它能不能“扩容”,取决于你用的是哪种 具体实现类。
HashMap160.75Set<String> set = new HashSet<>(); // 默认容量 16
扩容是 自动的、透明的,你一般感知不到。
LinkedHashMapHashSet 行为基本一致,只是维护了插入顺序TreeMap(红黑树)Set<Integer> set = new TreeSet<>();
| Set 实现 | 是否自动扩容 |
|---|---|
| HashSet | ✅ 是 |
| LinkedHashSet | ✅ 是 |
| TreeSet | ❌ 无容量概念 |
| EnumSet | ❌ 不可扩容 |
| 并发 Set | ✅ 是 |
✅ 可以(仅对基于哈希的 Set):
Set<String> set = new HashSet<>(32);
Set<String> set2 = new HashSet<>(32, 0.75f);
如果你愿意,我也可以帮你画 HashSet 扩容前后的结构变化图,或者讲 为什么负载因子是 0.75。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。