- 博客(2)
- 收藏
- 关注
原创 源码解析(1)ArrayList 源码解析(JDK8):扩容、增删原理与 fail‑fast 机制深度剖析
ArrayList的核心并不复杂:它本质上就是一个动态数组。默认构造采用延迟分配,第一次添加元素时容量通常扩展到 10。数组不足时,容量一般扩展为原来的 1.5 倍。查询和修改速度快,但中间位置的插入、删除需要移动元素。modCount与迭代器共同实现 fail-fast 机制。序列化只保存有效元素,避免无意义地保存数组空位。subList()是原列表的视图,不是独立副本。Java 8 为forEachremoveIfreplaceAllsort等方法提供了针对数组结构的优化实现。
2026-09-08 21:14:37
398
原创 希尔排序比插入排序还慢?实测出乎意料
希尔排序并非简单重复插入排序,而是先用较大gap让远距离错位元素大范围移动,再逐步缩小gap,最后gap=1插入排序时数组已接近有序,因而减少大量“小步移动”。但对比实验显示,在基本有序、规模小时,额外轮次反而增负,故不能断言希尔排序无条件更快;其性能取决于数据与gap序列选择。
2026-09-03 12:02:20
386
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅