Java使用数组实现ArrayList的动态扩容的方法
2020-06-22 12:59:44 来源:易采站长站 作者:王振洲
提到数组大家肯定不会陌生,但我们也知道数组有个缺点就是在创建时就确定了长度,之后就不能更改长度。所以Java官方向我们提供了ArrayList这个可变长的容器。其实ArrayList底层也是用数组进行实现的,今天我们就自己使用数组实现ArrayList的功能。
一、整体框架
废话不多说,我们以存放int类型元素为例,看一下ArrayList需要的成员变量和需要实现的方法。
public class ArrayList private int size;//用来记录实际存储元素个数 private int[] elements;//用来存储元素的数组 //构造方法:在创建ArrayList对象时,初始化elements数组 public ArrayList(int capacity){ elements = new int[capacity]; } /** * 元素的数量 * @return */ public int size() {} /** * 是否为空 * @return */ public boolean isEmpty() {} /** * 查看元素的索引 * @param element * @return */ public int indexOf(int element) {} /** * 是否包含元素 * @param element * @return */ public boolean contains(int element) {} /** * 获取index位置的元素 * @param index * @return */ public int get(int index) {} /** * 设置index位置的元素 * @param index * @param element * @return 原来的元素 */ public int set(int index, int element) {} /** * 在index索引位置插入元素 * @param index * @param element */ public void add(int index, int element) {} /** * 添加元素到尾部 * @param element */ public void add(int element) {} /** * 删除index位置的元素 * @param index * @return */ public int remove(int index) {} /** * 清除所有元素 */ public void clear() {} /** * 用来打印列表 */ public String toString() {} }
二、方法实现
框架我们已经有了,接下来我们一步步实现方法就行。
size()方法:
这个方法很简单,因为我们有size属性,直接将其返回就行了。
public int size() { return size; }
isEmpty()方法:
这个方法也很简单,判断是否为空只需要判断size是否为0即可。
public boolean isEmpty() { return size == 0; }
indexOf(int element)方法:
这个方法是用来查询元素的所在索引位置,并返回。我们通过遍历列表查找即可,找到就将元素返回,没有找到返回-1。
public int indexOf(int element) { for (int i = 0; i < size; i++) { if (element.equals(elements[i])) { return i; } return -1; }
contains(int element)方法:
这个方法是用来查看所传元素是否在数组中,我们可以直接通过indexOf()方法查看返回值是否不等于-1,不等于-1返回true,等于-1返回false。
public boolean contains(int element) { return indexOf(element) != -1; }