数组元素的简单的增删改的操作

本文介绍了如何使用Java编写一个包含追加元素、打印、获取指定位置和替换元素功能的数组类。通过实例演示了如何创建数组,以及如何自定义toString方法以满足特定输出格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单编写一个数组API 再用demo去调用编写的API

 * 追加元素
 * 打印数组元素
 * 获取指定位置的数组
 * 替换指定位置的元素

/**
 * 数组元素的增删改查的需求
 * 初始化  指定个数和不指定个数
 * 追加元素
 * 打印数组元素
 * 获取指定位置的数组
 * 替换指定位置的元素
 */
public class ArrDemo {
    // 声明字段
    // 封装一个整型数组
    private int[] elements;
    // 有效元素统计  默认值为0
    private int count;

    // 无参构造器-->默认16个元素
    public ArrDemo(){
        this.elements = new int[16];
    }

    // 有参构造器-->指定几个元素
    public ArrDemo(int cap){
        this.elements = new int[cap];
    }

    // 声明方法
    // 1>追加操作
    public void append(int val){
        // 第一步:验证容量是否充足 TODO
        // 第二步:追加元素
        this.elements[this.count] = val;
        this.count ++ ;
    }

    // 2>打印数组元素  可以用父类的toString方法
    // 但是里面的内容不符合开发需求  所以需要重写(打完收工原则)
    // 打印出[x,x,x...]的格式
    // 重新编写的toString方法存在一个问题 就是没有考虑可变字符串
    // 可变字符串 StringBuilder()
    @Override
    public String toString() {
//        return Arrays.toString(this.elements);
//        String str = "[";
//        for (int i = 0; i < this.count ; i++) {
//            str += this.elements[i];
//            if (i == this.count - 1){
//                str += "]";
//            }else{
//                str += ",";
//            }
//        }
//        return str;
        
        // 如果没有元素 需要进行校验
        if (this.count == 0){
            return "[]";
        }
        // 需要给StringBuilder声明容量大小
        // [元素1,元素2...]  [+元素+,+元素+]
        // -->this.count + (this.count-1)+2
        int cap = this.count + (this.count - 1) + 2;
        // 声明可变字符串组
        StringBuilder sb = new StringBuilder(cap);
        sb.append("[");
        // 因为考虑用索引,所以不用加强for循环
        for (int i = 0; i < this.count ; i++) {
            // 声明一个数组去装遍历出来的元素
            int num = this.elements[i];
            sb.append(num).append(",");
        }
        // 因为最后一个是]结尾,而不是,
        sb.deleteCharAt(sb.length() - 1).append("]");
        return sb.toString();
    }

    // 3>获取指定位置的元素
    public int getEle(int index){
        // 校验传入的索引的值是否合法
        // index不能传入负数
        // 存在一个问题 校验逻辑和业务逻辑混在一起 不利于后期添加其他校验逻辑
//        if (index >= 0 && this.count > index ){
//            return this.elements[index];
//        }else{
//            return -1;
//        }

        // 校验传入的索引的值是否合法
        // index不能传入负数
        if (index < 0 || index >= this.count){
            return -1;
        }else{
            return this.elements[index];
        }
    }

    // 4>替换指定位置的元素
    // 逻辑和前面一个一样
    // 校验传入的索引的值是否合法
    // index不能传入负数 和 大于等于统计的值
    public void setEleAt(int index,int newEle){
        if (index < 0 || index >= this.count){
            return;
        }else{
            this.elements[index] = newEle;
        }
    }
}

测试类调用方法

public class ArrDemoTest{
    public static void main(String[] args) {
        // 声明一个6个元素的数组
        ArrDemo arrDemo = new ArrDemo(6);
//        System.out.println(arrDemo.toString());

        // 1>追加元素
        arrDemo.append(5);
        arrDemo.append(9);

        // 2>打印数组元素
        // 直接打印就可以了 因为已经重写了toString的方法
        // 但是会发现一个问题 就是它会把其他元素全部打印出来 这就不符合封装的原则,所以需要重写toString
        System.out.println(arrDemo);

        // 3>获取指定位置的元素
        int ele = arrDemo.getEle(1);
        System.out.println(ele);

        // 4>替换指定位置的元素
        arrDemo.setEleAt(1,99);
        System.out.println(arrDemo);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值