赞
踩
目录
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;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。