ArrayList在我们日常开发中使用的非常频繁,那么我们是否了解ArrayList的内部实现机制呢?是否深入理解了ArrayList?
首先要提出的第一个问题是,如何深入的理解ArrayList呢?达到什么样的程度才叫深入理解呢?
我们采用的方法是从零开始打造一个全新的MyList,而这个类具备的功能和ArrayList几乎完全一样,采用逐步递进的方式,深入浅出,每次对上一次的方案进行分析,存在哪些问题,并提出改进的措施。
需求定义
我们首先提出一个非常简单的需求,定义一个集合类,能够实现字符串的添加操作,如下:
public static void main(String[] args) { MyList myList = new MyList(); myList.add("hello"); }
代码实现
这个需求还是比较简单的,能够实现字符串的添加操作,我们可以采用字符串数组的方式来保存每次添加的字符串,然后用一个标记来表示当前数组的位置。
public class MyList { private static final int DEFAULT_CAPACITY = 10; private String[] elementData; private int size; public MyList() { elementData = new String[DEFAULT_CAPACITY]; } private void add(String e) { this.elementData[size++] = e; } }
构造函数中默认初始化了一个大小为10的字符串数组,这样后续在添加字符串的时候,就可以直接放在这个数组中了。
再使用一个size变量标记当前数组的位置,每次添加新的字符串后,size后移一位,实现字符串的添加操作。
这样我们就完成了一个基于字符串数组的List类的实现,能够实现字符串的添加操作。
虽然我们已经实现了需求,但是请大家思考这样的实现方式存在哪些问题?欢迎下方留言。