面向对象类的设计

 设计一个类替代数组可以做的事
    充当一个小容器 能添加元素  获取元素  删除元素
复制代码
package com.sum1;

public class ArrayBox {

    //设计一个类替代数组可以做的事
    //充当一个小容器 能添加元素  获取元素  删除元素 
    //属性
    public int[] elementData = new int[10];//用数组来存储元素
    int size=0;//记录数组中存放元素的个数
    
    //方法
    //设计一个方法  该方法删除指定位置的元素
    public void remove(int index){
        int BeDel = elementData[index];
        for(int i=index;i<size-1;i++){
            elementData[i] = elementData[i+1];
        }
        elementData[--size]=0;
    }
    //设计一个方法  该方法可以判断元素是否存在
    public void isExist(int index){
        if(index<0 || index >= size){//如果index不满足条件  则抛出异常
            throw new BoxIndexOutOfBoundsException("index:"+index+"size:"+size);
        }
    }
    
    //设计一个方法  该方法比较数组长度与用户需要长度
    public void ensureCapacity(int minCapacity){
        if(minCapacity > elementData.length){//数组长度比用户需要的小  则需要进行扩容
            this.enLarge(minCapacity);
        }
    }
    //设计一个方法  该方法扩大数组的容量
    public void enLarge(int minCapacity){
        int oldCapacity = elementData.length;
        int newCapacity = oldCapacity + (oldCapacity>>1);//先设置新的数组长度为原先的1.5倍
        if(newCapacity < minCapacity){//如果还未达到用户需要的最小长度,则直接使用用户需要的最小长度
            newCapacity = minCapacity;
        }
        elementData = this.CopyOfOld(elementData,newCapacity);
    }
    //设计一个方法,将旧数组的元素全部搬运到新数组中来,将生成的新数组返回
    public int[] CopyOfOld(int[] oldArray,int newCapacity){//传递两个参数,一个是旧数组,一个是新数组的长度
        int[] newArray = new int[newCapacity];//定义一个新数组
        for(int i=0;i<oldArray.length;i++){//搬运数组元素
            newArray[i] = oldArray[i];
        }
        return newArray;
    }
    //设计一个方法  该方法能添加元素
    public boolean add(int element){//方法执行后返回添加完元素后的数组
        //判断比较数组长度与用户需要长度
        ensureCapacity(size+1);//有效元素长度加1
        elementData[size++] = element;//将用户传递参数添加到数组中
        return true;
    }
    //设计一个方法  该方法能获得数组元素
    public int get(int index){
        //判断index位置是否有元素存在
        this.isExist(index);
        return elementData[index];
    }
    //设计一个方法  该方法能删除数组中元素,返回删除元素后的数组
    public int[] delete(int index){
        //判断index位置是否有元素存在
        this.isExist(index);
        //调用方法删除元素
        this.remove(index);
        return elementData;
    }
}
复制代码

 

package com.sum1;

public class BoxIndexOutOfBoundsException extends RuntimeException{
    public BoxIndexOutOfBoundsException(){}
    public BoxIndexOutOfBoundsException(String msg){}
}

 

  

复制代码
package com.sum1;

public class Test {
    public static void main(String[] args) {
        ArrayBox array = new ArrayBox();//创建一个ArrayBox的对象
        for(int i=1;i<=5;i++){//执行add()方法
        array.add(i*10);
        }
        System.out.println(array.size);
        int e = array.get(1);//执行获取元素方法
        System.out.println(e);
        array.delete(2);//执行删除元素方法
        for(int i=0;i<array.size;i++){
            System.out.print(array.elementData[i]+" ");
        }
    }
}
复制代码

 

 

posted @   海中的小顽强  阅读(394)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示