ArrayList的特性:可以自由扩展,存储任意多个数字,弥补了数组的定长的缺陷,但是他的内部还是数组!为什么ArrayList可以自由扩展? 下面我们用代码来演示下ArrayList的内部实现!
首先我们定义一个MyArrayList,既然是集合,集合的内部实现都是数组,我们定义一个MyArrayList里面包含一个Object类型的数组和一个int 类型的size。size是用来存储数组中存储了多少个Object!
publicclass MyArrayList { Object []arr=new Object[2]; //定义一个数组 intsize=0; //存入了多少数到数组里面的记录! (数组里面有多少个数)当记录数等于数组的长度时就需要扩容 } |
这样我们自己的MyArrayList就定义好了,在ArrayList中有添加数,在指定位置添加数,根据索引查询,根据索引删除,删除指定对象等方法,用代码来实现:
首先定义一个添加的方法add(Object object); 我们只需要将传进来的object添加到上面定义好的arr的数组中,但是数组的长度只有2个,当我们添加第三个object的时候,就会越界,下面我们要做的是将arr数组的长度增加!如何做了?
代码实现如下:
/*添加数据,判断扩容*/ publicvoid add(Object num){ if(arr.length==size){ Object[] temp = new Object[arr.length*3/2+1]; System.arraycopy(arr, 0, temp, 0,size); arr=temp; } arr[ |