当前位置:   article > 正文

JAVA之动态数组_java创建动态数组

java创建动态数组

目录

一、什么是动态数组

二、动态数组的实现


一、什么是动态数组

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

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

二、动态数组的实现

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

  1. public class MyList {
  2. Object[] values;// 什么数据都可以存
  3. int length;//数组长度
  4. int size;//数组元素数量
  5. //初始化构造方法
  6. public MyList(int initLength){
  7. if(initLength<=0){
  8. System.err.println ("initLength 小于或者等于 0 不合法!! ");
  9. // 默认初始 长度设定为10
  10. length = 10;
  11. values = new Object[length];
  12. size=0;
  13. }else{
  14. length = initLength;
  15. values = new Object[length];
  16. size=0;
  17. }
  18. }

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

(1)添加数组元素

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

(2)获取数组元素

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

(3)移除数组元素

  • 判断要获取的数组下标是否越界,若越界,报错
  • 后置数据前移
  1. public void remove(int index){
  2. if(index<0 || index>=size){
  3. System.err.println ("下标越界!!!");
  4. return;
  5. }
  6. values[index]=null;
  7. // 后置数据前移
  8. for(int i=index;i<size-1;i++){
  9. values[i] = values[i + 1];
  10. }
  11. values[size-1] = null;
  12. // 更新size
  13. size--;
  14. System.out.println("新的数组为"+values);
  15. }

(4)替换数组元素

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/567487
推荐阅读
相关标签
  

闽ICP备14008679号