gary&& 2021-08-19 10:05 采纳率: 33.3%
浏览 37
已结题

二次封装数组中size是如何运行的,又是如何与数组相联系的,希望解答一下

public class Array {
//存储数据的静态数组
private int data[];
//元素的实际个数
private int size;
//构造函数 传入二次封装数组的容量

public Array(int capacity) {
    data = new int[capacity];
    //元素个数初始化时默认为0
    size = 0;
}
//无参构造函数 容量默认为10

public Array() {
    this(10);
}
//获取数组中的实际元素个数
public int getSize(){
    return size;
}
//获取数组的容量
public int getCapacity(){
    return data.length;
}
//返回数组是否为空
public boolean isEmpty(){
    return size == 0;
}

}

  • 写回答

2条回答 默认 最新

  • zlebhs 2021-08-19 10:10
    关注

    add的时候判断下是否达到capacity,达到抛出异常,否则size + 1,remove的时候判断是否有那个元素,没有抛出异常,有则size - 1
    还有不懂的可以直接去看看ArrayList的实现,下面是简单实现了下add get remove

    public class Array {
    
        //存储数据的静态数组
        private int data[];
        //元素的实际个数
        private int size;
        //构造函数 传入二次封装数组的容量
        public Array(int capacity) {
            data = new int[capacity];
            //元素个数初始化时默认为0
            size = 0;
        }
        //无参构造函数 容量默认为10
        public Array() {
            this(10);
        }
        //获取数组中的实际元素个数
        public int getSize(){
            return size;
        }
        //获取数组的容量
        public int getCapacity(){
            return data.length;
        }
        //返回数组是否为空
        public boolean isEmpty(){
            return size == 0;
        }
    
        public boolean isMax() {
            return size == data.length;
        }
    
    
        private boolean checkIndex(int index) {
            if (index < 0) {
                return false;
            }
            return index < size;
        }
    
        public void add(int val) {
            if (isMax()) {
                throw new RuntimeException("out of capacity");
            }
            data[size ++] = val;
        }
    
        public void remove(int index) {
            if (checkIndex(index)) {
                int right = size - index - 1;
                if (right > 0) {
                    System.arraycopy(data, index + 1, data, index, right);
                }
                data[--size] = 0;
                return;
            }
            throw new ArrayIndexOutOfBoundsException(index);
        }
    
        public int get(int index) {
            if (checkIndex(index)) {
                return data[index];
            }
            throw new ArrayIndexOutOfBoundsException(index);
        }
    
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月28日
  • 已采纳回答 8月20日
  • 创建了问题 8月19日

悬赏问题

  • ¥15 BP神经网络控制倒立摆
  • ¥20 要这个数学建模编程的代码 并且能完整允许出来结果 完整的过程和数据的结果
  • ¥15 html5+css和javascript有人可以帮吗?图片要怎么插入代码里面啊
  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算