0    课程来源

https://coding.imooc.com/lesson/207.html#mid=13408

 

1    重点关注

coding

 

2    课程内容

coding

 

3    coding

3.1    添加元素demo(着重看3.1,3.2,3.3)

package com.company;

import java.util.Arrays;

public class Array {
    private int size;
    //int类型的数组
    private int[] data;


    /**
     * 1.1  创建构造函数,传入容量,则新生成一个数组
     * @param capacity
     */
    public Array(int capacity){
        data = new int[capacity];
        size = 0;
    }

    //1.2  创建无参构造函数
    public Array(){
        this(10);
    }

    //1.3  添加传入静态数组的构造函数
    public Array(int[] param){
        this.data = param;
        long outParm = Arrays.stream(param).filter(e->{
            return e>0;
        }).count();
        this.size = (int)outParm;
    }

    //2.1  添加getSize,获取数组元素个数
    public int getSize(){
        return size;
    }

    //2.2  添加getCapacity,获取数组容量
    public int getCapacity(){
        return data.length;
    }

    //2.3  添加数组是否为空方法
    public boolean isEmpty(){
        return size==0;
    }

    //3.1  在数组末尾添加元素
    public void addLast(int e){
        addElement(size,e);
    }

    //3.2  在数组起始添加元素
    public void addFirst(int e){
        addElement(0,e);
    }

    //3.3  数组根据索引添加元素
    public void addElement(int index,int e){
        //1     校验异常
        //1.1   如果数组已经满了,则禁止插入
        if(size== data.length){
            throw new IllegalArgumentException("数组已满,禁止插入");
        }

        //1.2   如果传入的索引在已有数组的索引之外,则校验异常
        if(index<0||index>size){
            throw new IllegalArgumentException("索引应在已有数组的索引之间");
        }

        //2     实现根据索引添加元素的逻辑
        //2.1   data同步
        for(int j = size-1;j>=index;j--){
            data[j+1] = data[j];
        }
        data[index] = e;

        //2.2   size同步
        size++;
    }


    @Override
    public String toString() {
        return "Array{" +
                "大小=" + size +
                ", 数据对象为=" + Arrays.toString(data) +
                '}';
    }
}

 

posted on 2022-09-23 08:17  菜鸟乙  阅读(28)  评论(0编辑  收藏  举报