Java集合之ArrayList和LinkedList的实现原理以及Iterator详解

ArrayList实现可变数组的原理:

  当元素超出数组内容,会产生一个新数组,将原来数组的数据复制到新数组中,再将新的元素添加到新数组中。

  ArrayList:是按照原数组的50%来延长,构造一个初始容量为10的空列表

用ArrayList模拟数组:

package iterater.patten.design; //探索ArrayList实现的可变数组的原理,用ArrayList实现一个容器存储对象 public class ArrayList { Object[] objects = new Object[10]; // 定义计数器,用于计算数组中的元素个数 int index = 0; public void add(Object o) { // 当数组满时,则创建一个新的数组,将原数组中的元素复制进新数组中,再将新的元素加入到数组中 if (index == objects.length) { // 按原数组的2倍长度创建新数组,其实这样不太合理 Object[] newObjects = new Object[objects.length * 2]; // 将原数组中的元素复制进新数组中,再将新的元素加入到数组中 System.arraycopy(objects, 0, newObjects, 0, objects.length); // 数组引用指向新的数组 objects = newObjects; } // 将新增元素放到数组中 objects[index] = o; index++; } // 定义size函数获取元素个数 public int size() { return index; } }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzpfwy.html