跳至主要内容

博文

目前显示的是 六月, 2019的博文

动手实现:用Java实现一个简单的ArrayList

动手实现:用Java实现一个简单的ArrayList 概述 ArrayList是一个可以自动扩容的List接口实现,由命名可以看出是由数组实现。本文尝试编写一个简单的ArrayList实现,通过对比来理解JDK中的ArrayList是如何实现的。本次主要实现ArrayList的常用方法,完成简单的CRUD和迭代器。 动手实现 成员变量和构造方法 首先看一下类声明,为了更方便实现列表的相关方法,以及面向接口编程,这里声明实现 List 接口,类命名为SimpleArrayList public class SimpleArrayList < E > implements List < E > { } 然后再看一下成员变量,这里设计两个成员变量,第一个变量是实际存储数据的数组,第二个变量是数据的大小 private Object [ ] data ; private int size ; 然后在构造方法中初始化数组 public SimpleArrayList ( ) { data = new Object [ 10 ] ; } CRUD的实现 首先看一下 add 方法实现 @Override public boolean add ( E e ) { //判断数组还有没有空间存放新的元素 if ( ( size + 1 ) > data . length ) { Object [ ] newData = new Object [ data . length + 10 ] ; System . arraycopy ( data , 0 , newData , 0 , data . length ) ; data = newData ; } data [ size ++ ] = e ; return true ; } 方法先判断数组中还有没有足够空间存放新元素。如果没有足够空间,就创建一个新数组,长度在原来的基础上增加10,再把原来数组的内容拷贝到新数组里,最后把新数组赋值给实际存储数据的成