学习Java的重要方式之一就是阅读源码,但是往往一个类的内容会多得令人眼花缭乱,让人在学习过程中抓不住重点,更容易使人产生畏难心理。所以我在学习的过程中尝试参照源码仿写各种重要的Java对象,来实现此对象的基础功能。在手写源码的过程中,我更能体会到各种Java类的实现原理,语言设计者的用意,和其中包含的设计思想。我将我的代码以及学习总结记录于此,以供自己日后回顾和感兴趣的朋友们参考。
此篇为仿写Java集合框架中最常用的集合容器之一ArrayList。我只实现了最基础的增删改查功能,以及泛型。实现原理大致与源码相似,但是为了简化代码自己尝试做了一些修改。如有错误或者改进之处,感谢各位看官指点。
手写ArrayList实现的主要方法有:
- 判断下标是否越界
- 数组扩容
- 默认构造方法与指定容器长度的构造方法
- 默认位置和指定位置的插入元素
- 删除一个元素和删除指定位置元素
- 获得指定位置上的元素
- 修改指定位置上的元素
import