有关数组的基本操作

发布时间 2023-09-09 20:25:16作者: whO_aMi

什么是数组?
数组对应的英文是array,是有限个相同类型的变量组成的有序集合,是最简单,最常用的数据结构。

数据结构的操作无非就是增,删,改,查4种情况:

1. 读取数组
数组在内存中顺序存储,给出一个数组下标即可读取到对应的数组元素。

点击查看代码
package Array;//创建的软件包

package Array;

public class array1 {
    public static void main(String[] args) {
        int[] arr=new int[]{6,5,4,3,2,1};//创建数组并赋初值
        System.out.println(arr[3]);//输出数组下标为3的元素
        //输出整个数组元素
        for(int i=0;i<=5;i++){
            System.out.print(arr[i] + " ");
        }
    }
}

2.更新元素
直接利用数组下标,就可以把新值赋值给该元素。

点击查看代码
package Array;

public class array2 {
    public static void main(String[] args) {
        int[] arr=new int[]{1,2,3,4,5,6};
        arr[5]=10;//更新第6个元素
        System.out.println(arr[5]);
        //输出整个数组元素
        for(int i=0;i<=5;i++){
            System.out.println(arr[i] + " ");
        }
    }
}

3.插入元素:
插入数组元素的操作存在3种情况:
1.尾部插入:
直接把插入的元素放在数组尾部的空闲位置即可;

2.中间插入:
由于数组的每一个元素都有其固定的下标,所以不得不将插入位置及以后的元素
向后移动一位;

3.超范围插入:
涉及到数组的扩容,此时可以创建一个新数组,长度是旧数组的2倍,再把旧数组的
元素统统复制过去,就实现了数组的扩容。

点击查看代码
package Array;

public class array3 {
    //定义对象数组
    private int[] arr;
    //数组实际元素数量
    private int size;

    //定义构造方法
    public array3(int capacity){    //构造数组长度
        this.arr=new int[capacity];
        size=0;
    }

    //数组插入元素方法(index:插入的位置即目标元素的下标;element:新元素)
    public void insert(int index,int element) throws Exception{ //抛出异常不做处理
        //判断是否超出数组范围
        if(index<0||index>size){
            throw new IndexOutOfBoundsException("超出数组实际元素范围!!!");
        }
        //如果是超范围插入
        if(size>=arr.length){
            resize();
        }
        //从右到左开始循环,向后移动一位腾出空间
        for(int i=size-1;i>=index;i--){
            arr[i+1]=arr[i];
        }
        //将腾出的空间插入新元素
        arr[index]=element;
        //数组范围自增
        size++;
    }

    //数组扩容(考虑到插入的新元素会超范围)
    public void resize(){
        //新建一个数组长度为久数组长度两倍
        int[] arrNew=new int[arr.length*2];
        //从旧数组赋值到新数组
        System.arraycopy(arr,0,arrNew,0,arr.length);
        //再将新数组赋值给久数组
        arr=arrNew;
    }

    //输出数组方法
    public void output(){
        for(int i=0;i<size;i++){
            System.out.print(arr[i]+" ");
        }
    }

    //主方法
    public static void main(String[] args) throws Exception{    //抛出异常不做处理
        //给数组分配存储空间
        array3 arr=new array3(4);//给数组分配长度为10的存储空间
        //插入新元素
        arr.insert(0,1);
        arr.insert(1,2);
        arr.insert(2,3);
        arr.insert(3,4);
        arr.insert(1,0);
        arr.insert(2,1);
        arr.deleted(2);
        //输出
        arr.output();
        System.out.println("\nsize的长度为:" + arr.size);
    }
}

4.删除元素
和插入元素的操作类似,由于不涉及扩容操作,直接将要删除的元素取出,
赋给deletedElement,删除后从右到左往前移一位。

点击查看代码
//删除数组元素方法(index:表示删除元素的位置)
    public void deleted(int index) throws Exception{
        //判断删除元素下标是否越界
        if(index<0||index>=size){
            throw new IndexOutOfBoundsException("访问越界!!!");
        }
        //将要删除的元素取出
        int deletedElement=arr[index];
        //从index位置开始往前移动一位
        for(int i=index;i<=size;i++){
            arr[i]=arr[i+1];
        }
        size--;
        //return deletedElement;
    }