我是靠谱客的博主 爱笑白开水,最近开发中收集的这篇文章主要介绍JAVA之动态数组一、什么是动态数组二、动态数组的实现,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

一、什么是动态数组

二、动态数组的实现


一、什么是动态数组

Java中提供的数组都是静态数组,即在一个数组定义时确定长度后,使用过程中无法修改此长度。

动态数组就是在普通数组上,增加了一个可以根据元素的个数动态调整数组大小的功能。

二、动态数组的实现

1.创建一个Object类型的value数组,设置数组长度为length,数组元素数为size,并且初始化构造方法

public class MyList {
    Object[] values;// 什么数据都可以存
    int length;//数组长度
    int size;//数组元素数量
    //初始化构造方法
    public MyList(int initLength){
        if(initLength<=0){
            System.err.println ("initLength 小于或者等于 0 不合法!! ");
            // 默认初始 长度设定为10
            length = 10;
            values = new Object[length];
            size=0;
        }else{
            length = initLength;
            values = new Object[length];
            size=0;
        }
    }

2.通过实现添加数组元素、获取数组元素、移除数组元素、代替数组元素的功能来实现动态数组

(1)添加数组元素

  • 创建一个新数组,长度比原来的数组大
  • 遍历原数组元素,将原数组中的元素存入新数组中,替换引用
public void add(Object e){
        // 检测 数组的空间是否足够
        if(size>=length){
            // 扩容 : 创建一个新数组,长度比原来数组大,将原数组中的数据存入新数组中,替换引用
            int oldlength = length;
            int newlength = oldlength+(oldlength>>1);// 1.5倍扩容
            // 新建数组
            length = newlength;
            Object[] newArr = new Object[length];
            for(int i = 0; i < oldlength; i++){
                newArr[i]=values[i];
            }
            // 迭代替换
            values=newArr;
            System.out.println ("扩容完成,新的长度为:"+length);
        }
        values[size]=e;
        size++;
    }

(2)获取数组元素

  • 判断要获取的数组下标是否越界,若越界,报错
  • 判断之后,直接返回要获取的数组元素
    public Object get(int index) {
        if (index < 0 || index >= size) {
            System.err.println("下标越界!!!");
            return null;
        }
        return values[index];
    }

(3)移除数组元素

  • 判断要获取的数组下标是否越界,若越界,报错
  • 后置数据前移
 public void remove(int index){
        if(index<0 || index>=size){
            System.err.println ("下标越界!!!");
            return;
        }
        values[index]=null;
        // 后置数据前移
 
        for(int i=index;i<size-1;i++){
                values[i] = values[i + 1];

        }
        values[size-1] = null;
        // 更新size
        size--;
        System.out.println("新的数组为"+values);
    }

(4)替换数组元素

  • 判断要获取的数组下标是否越界,若越界,报错
  • 替换新的数组元素
    public Object replace(int index,Object value){
        if(index<0 || index>=size){
            System.err.println ("下标越界!!!");
            return null;
        }
        //替换新的数组元素
        Object oldvalue = values[index];
        values[index] = value;
        return oldvalue;
    }

最后

以上就是爱笑白开水为你收集整理的JAVA之动态数组一、什么是动态数组二、动态数组的实现的全部内容,希望文章能够帮你解决JAVA之动态数组一、什么是动态数组二、动态数组的实现所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部