数组简单源码

数组简单源码实现,做一个笔记。

package arrays.init;

/**
 * 数组初始化
 */
public class MyArrays {
    /**
     * 定义一个数组
     */
    private int[] intArrays;

    /**
     * 定义数组的实际长度
     */
    private int elems;

    /**
     * 定义数组的最大长度
     */
    private int length;

    public MyArrays() {
        elems = 0;
        length = 10;
        intArrays = new int[length];
    }

    public MyArrays(int length) {
        elems = 0;
        this.length = length;
        intArrays = new int[length];
    }

    /**
     * 获取数组大小
     */
    public int getSize() {
        return elems;
    }

    /**
     * 遍历数组
     */
    public void display() {
        for (int i = 0; i < elems; i++) {
            System.out.print(intArrays[i] + ",");
        }
        System.out.println();
    }

    /**
     * 添加元素
     */
    public boolean add(int value) {
        if (length < elems) {
            throw new IndexOutOfBoundsException("数组越界");
        } else {
            intArrays[elems] = value;
            elems++;
        }
        return true;
    }

    /**
     * 查找元素 根据元素值
     */
    public int find(int value) {
        int i = 0;
        for (i = 0; i < elems; i++) {
            if (intArrays[i] == value) {
                break;
            }
        }
        // not find
        if (i == elems) {
            return -1;
        }
        return i;
    }

    /**
     * 查找元素 根据下标
     */
    public int get(int i) {
        if (i < 0 || i >= elems) {
            throw new IndexOutOfBoundsException("数组越界");
        }
        return intArrays[i];
    }

    /**
     * 删除元素
     */
    public boolean delete(int value) {
        int k = find(value);
        // not find
        if (k == -1) {
            System.out.println("元素:" + value + "不存在");
            return false;
        } else {
            if (k == elems - 1) { // 最后一个元素
                elems--;
            } else { // k 后面的元素向前移动
                for (int i = k; i < elems - 1; i++) {
                    intArrays[i] = intArrays[i + 1];
                }
                elems--;
            }
        }
        return true;
    }

    /**
     * 修改数组元素
     */
    public boolean modify(int oldValue, int newValue) {
        int k = find(oldValue);
        if (k == -1) {
            System.out.println("元素:" + oldValue + "不存在");
            return false;
        } else {
            intArrays[k] = newValue;
        }
        return true;
    }
}

测试类

package arrays;

import arrays.init.MyArrays;

public class Test {
    public static void main(String[] args) {
        // 1. 实例化数组
        MyArrays myArrays = new MyArrays(10);
        // 2. 获取数组的大小
        System.out.println("数组大小:" + myArrays.getSize());
        // 3. 添加元素
        System.out.println("添加元素:" + myArrays.add(2));
        System.out.println("添加元素:" + myArrays.add(3));
        // 4. 遍历数组
        myArrays.display();
        // 5. 根据下标查询元素
        System.out.println("获取元素:" + myArrays.get(0));
        // 6. 查找元素根据值
        System.out.println("获取元素下标:" + myArrays.find(2));
        // 7. 删除数组元素 根据元素值
        System.out.println("删除元素:" + myArrays.delete(2));
        myArrays.display();
        // 8. 修改元素 oldValue newValue
        myArrays.modify(3, 4);
        myArrays.display();

    }
}

结果

数组大小:0
添加元素:true
添加元素:true
2,3,
获取元素:2
获取元素下标:0
删除元素:true
3,
4,

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值