欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数据结构(Java)之数组(2)-封装自己的数组并实现插入操作

程序员文章站 2022-03-01 23:20:27
...

使用数组的优点:
快速查找
数组应用场景:
最好应用与"索引有语义"的情况(身份证号不能作为索引,要开辟很大空间)

制作属于自己的数组类

数据结构(Java)之数组(2)-封装自己的数组并实现插入操作
class Array
capacity:
容量-数组空间最多可以装多少元素
size:
数组中实际装多少元素 索引

public class Array {
    private int[] data;
    private int size;//data数组中有多少个元素
    //  数组的容量capacity = data.length

    public Array(int capacity){
        //传入data数组的容量构造Array
        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 isEmpty(){
        return size == 0;
    }
}

向数组中添加元素:

1.向数组末尾添加元素

思路:
①判断数组中是否还能容纳新的元素
②data[size]添加元素
③size++

//向数组末尾添加元素
    public void addLast(int e){
        //判断数组中是否还能容纳新的元素
        if (size ==data.length){
            throw new IllegalArgumentException("AddLast failed .Array is full");
        }
        data[size] = e;
        size++;
    }

2.向指定的位置添加元素(在第index个位置插入一个新元素e)

思路:
①判断数组中是否还能容纳新的元素
②判断传入的index是否合格-index<0 || index <= data.length-1
③将数组中现有的元素从最后一个元素开始依次向后移动一位
④数组的index位置赋值为e
⑤size ++

//在第index个位置插入一个新元素e
    public void add(int index ,int e ){
        if (size ==data.length){
            throw new IllegalArgumentException("AddLast failed .Array is full");
        }
        if (index <0 || index >size){
            throw new IllegalArgumentException("AddLast failed .");
        }
        for (int i = size-1; i >= index; i--) {
            data[i+1] = data[i];
        }
        data[index] = e;
        size++;
    }

代码复用,向数组末尾添加元素,就可以写的简单一点了

public void addLast(int e){
        add(size,e);
    }

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

public void addFirst(int e ){
        add(0,e);
    }