Java使用数组实现ArrayList的动态扩容的方法

2020-06-22 12:59 来源:易采站长站 作者:王振洲 点击: 评论:

A-A+

原标题:Java使用数组实现ArrayList的动态扩容的方法

提到数组大家肯定不会陌生,但我们也知道数组有个缺点就是在创建时就确定了长度,之后就不能更改长度。所以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;
}

【易采站长站编辑:秋军】