5: ArrayList练习 静态数组(入门) (文末有项目连接)

1:静态数组说明
先进行静态数组(无法扩容)的练习  熟悉一个静态数组的写法

 * 1:getLength()        获取空间大小
 * 2:getCount()         获取已有个数
 * 3:find(int index)  根据索引找到数据中的元素并返回
 * 4:findAll()          查询所有元素
 * 5:insert(int value)在数组尾部插入元素
 * 6:insertByIndex(int index, int value)  根据索引插入元素
 * 7:deleteByIndex(int index) 根据索引删除元素
2:代码实战
public class StaticArrayList {

    //定义整型数据data保存数据
    public int data[];
    //定义数组长度
    private int capacity;
    //定义实际个数
    private int count;

    //构造方法,定义数组大小
    public StaticArrayList(int capacity) {
        this.data = new int[capacity];
        this.capacity = capacity;
        //一开始一个数都没有存所以为0
        this.count = 0;
    }

    //获取空间大小
    public int getLength(){
        return data.length;
    }

    //获取已有个数
    public int getCount(){
        return count;
    }

    //根据索引找到数据中的元素并返回
    public int find(int index) {
        if (index < 0 || index >= count) {
            return -1;
        }
        return data[index];
    }

    //查询所有元素
    public void findAll() {
        for (int i = 0; i < count; ++i) {
            System.out.print(data[i] + " ");
        }
        System.out.println();

    }

    //在数组尾部插入元素
    public boolean insert(int value){
        // 数组空间已满
        if (count == capacity) {
            System.out.println("没有可插入的位置");
            return false;
        }

        data[count] = value;
        ++count;
        return true;
    }

    //根据索引插入元素
    public boolean insertByIndex(int index, int value) {

        // 数组空间已满
        if (count == capacity) {
            System.out.println("没有可插入的位置");
            return false;
        }
        // 如果count还没满,那么就可以插入数据到数组中
        if (index < 0 || index > count) {
            System.out.println("位置不合法");
            return false;
        }
        // 位置合法
        //需要从数组最大的索引位置开始 各向上挪动一位
        //然后替换调需要插入的索引数据
        for (int i = count; i > index; --i) {
            data[i] = data[i - 1];
        }

        data[index] = value;
        ++count;
        return true;
    }

    //根据索引删除元素
    public boolean deleteByIndex(int index) {
        if (index < 0 || index >= count) {
            return false;
        }
        //从删除位置开始,将后面的元素向前移动一位
        for (int i = index + 1; i < count; ++i) {
            data[i - 1] = data[i];
        }

        --count;
        return true;
    }
}
3:代码测试
 private static void staticArrayListTest() {
        StaticArrayList staticArrayList = new StaticArrayList(10);

        System.out.println("空间大小 :" + staticArrayList.getLength());

        //在末尾新增一个元素
        staticArrayList.insert(1);
        staticArrayList.insert(5);
        staticArrayList.insert(10);

        System.out.println("实际个数 :" + staticArrayList.getCount());

        System.out.println("测试查询功能 存在则返回对应值 不存在则返回 -1 :" + staticArrayList.find(3));

        //随机插入的元素必须在 等于或小于已有的实际个数 如此时就是[1,5,10]  即3
        staticArrayList.insertByIndex(3, 666);
        staticArrayList.findAll();

        //测试按下标插入 数据挪位功能
        staticArrayList.insertByIndex(1, 999);
        staticArrayList.findAll();

        //测试按下标删除 数据挪位功能
        staticArrayList.deleteByIndex(1);
        staticArrayList.findAll();

    }

项目连接

请配合项目代码食用效果更佳:
项目地址:
https://github.com/hesuijin/hesuijin-algo
Git下载地址:
https://github.com.cnpmjs.org/hesuijin/hesuijin-algo.git

arrayCollection包

你可能感兴趣的:(5: ArrayList练习 静态数组(入门) (文末有项目连接))