封装数组之添加元素

在上一小节中,我们对数组进行了一个基本的封装,该小节中,我们在上一次基础上,新增往数组添加元素的方法:

1.向所有元素后添加一个元素

思路:

(1)先判断当前数组容量是否已满,未满则转入(2),否则抛出异常

(2)在元素下标为size的位置插入新元素

(3)维护我们的size值

  //向所有元素后添加元素
    public void addList(int e) {
        if (size == data.length)
            throw new IllegalArgumentException("数组已满");
data[size]
= e;
size
++; }

2.在指定index位置插入一个新元素

思路:

(1)先判断当前数组容量是否已满,未满则转入(2),否则抛出异常

(2)判断当前需要插入值的位置是否合理,合理则转入(3),否则抛出位置不合法异常

(3)将index之后的元素依次往后移动一位,然后将新元素插入到index位置

(4)维护我们的size值

  //在第index个位置插入一个新元素
    public void add(int index, int e) {
        //(1)先判断当前数组容量是否已满,未满则转入(2),否则抛出异常
        if (size == data.length)
            throw new IllegalArgumentException("数组已满");

        //(2)判断当前需要插入值的位置是否合理,合理则转入(3),否则抛出位置不合法异常
        if (index < 0 || index > size)
            throw new IllegalArgumentException("您选择的位置不合法");


        //将index位置之后的元素往后依次移动一位
        for (int i = size - 1; i >= index; i--) {

            //(3)将index之后的元素依次往后移动一位,然后将新元素插入到index位置
            data[i + 1] = data[i];
            data[index] = e;
            
            //(4)维护size值
            size++;
        }

    }

通过对在指定index位置插入一个新元素方法的编写,此时我们可以很轻松的编写出在所有元素之前添加一个新元素,

3.在所有元素之前添加一个新元素

 //在所有元素之前添加一个新元素
    public void addFirst(int e) {
        add(0, e);//0表示第一个位置
    }

我们还可以对在本节刚开始编写的第一个方法进行改写,改写如下:

 //向所有元素后添加元素
    public void addList(int e) {
        add(size, e);//size表示此时的最后一个元素
    }

到此我们对如何在数组中添加一个元素有了基本的认识,在下一节中我们就如何在数组中查询元素和修改元素进行学习。

若你感兴趣,关注我,我们一起学习~~~~

此小节代码:

/**
 * 1.从封装int类型数组开始
 */
public class Array {
    //使用private 的目的是防止用户从外界修改,造成数据不一致
    private int[] data;
    private int size;//数组中元素个数

    //构造函数,传入数组的容量capacity构造Array函数
    public Array(int capacity) {
        data = new int[capacity];
        size = 0;
    }

    //无参构造函数,默认数组的容量capacity=10
    public Array() {
        this(10);
    }

    //获取数组中元素个数
    public int getSize() {
        return size;
    }

    //获取数组的容量
    public int getCapacity() {
        return data.length;
    }

    //获取数据是否为空
    public boolean iEmpty() {
        return size == 0;
    }

    //向所有元素后添加元素
    public void addList(int e) {
        add(size, e);//size表示此时的最后一个元素
    }

    //在所有元素之前添加一个新元素
    public void addFirst(int e) {
        add(0, e);//0表示第一个位置
    }

    //在第index个位置插入一个新元素
    public void add(int index, int e) {
        //(1)先判断当前数组容量是否已满,未满则转入(2),否则抛出异常
        if (size == data.length)
            throw new IllegalArgumentException("数组已满");

        //(2)判断当前需要插入值的位置是否合理,合理则转入(3),否则抛出位置不合法异常
        if (index < 0 || index > size)
            throw new IllegalArgumentException("您选择的位置不合法");


        //将index位置之后的元素往后依次移动一位
        for (int i = size - 1; i >= index; i--) {

            //(3)将index之后的元素依次往后移动一位,然后将新元素插入到index位置
            data[i + 1] = data[i];
            data[index] = e;

            //(4)维护size值
            size++;
        }

    }

}
View Code

猜你喜欢

转载自www.cnblogs.com/wfaceboss/p/10605604.html