package com.array; public class array1{ // 什么类型的数据都可以存的数组 Object[] values; int size;// 作为元素个数 / 作为下次存储元素的下标 int length;//数组长度 static final int initCap = 10;//先定义一个不变的数组长度 // 构造方法: public array1(){ length = initCap; values = new Object[length]; size = 0; }//初始化一个数组 public array1(int initLength){ if(initLength < 2){ System.out.println ("输入的初始长度不能小于2,数组会使用默认的初始数据进行初始化"); length = initCap; values = new Object[length]; size = 0; } else{ length = initLength;// 使用传入的参数进行初始化 values = new Object[length]; size = 0; } } public void add(Object e){ // 扩容 if(size == length){// 数组已经存满了 需要扩容的 int oldLength = length; int newLength = oldLength+oldLength/2;// 1.5倍 // System.out.println (newLength); // 使用新的长度创建一个新的 容量更大的数组 Object[] newValues = new Object[newLength]; // 将原数组中的元素i移动到新数组中 for(int i = 0; i < oldLength; i++){ newValues[i] = values[i]; } // 将新数组的对象变量名中存储的新数组的内存地址赋值给旧数组名 values = newValues; // 更新最新的数组长度 length = newLength; System.out.println ("数组扩容完成,长度是:" + length); } values[size] = e; size++; } // 将一个数组存入动态数组中 重点考虑扩容 public void addAll(Object[] eArr){ } // 根据传入的下标获取数组元素 public Object get(int index){ // 检查传入的下标是否在合法的区间内 (0~size-1) if(index >= 0 && index < size){ Object e = values[index]; return e; } System.out.println ("传入的下标不在数组的范围内~"); return null; } // 替换传入下标位置的元素 public void set(int index,Object e){ } // 根据下标移除元素 并且返回被移除的元素 // 被移除的元素所在的位置,需要后置数据前移填充 public Object remove(int index){ if(index >= 0 && index < size){ Object oldE = values[index]; for(int i = index; i < size - 1; i++){ values[i] = values[i + 1]; } size--; return oldE; } System.out.println ("传入的下标不在数组的范围内~"); return null; } public String toString(){ String str = "{"; for(int i = 0; i < size; i++){ str += values[i] + ","; } str += "}"; return str; } public static void main(String[] args){ array1 myArray = new array1 (10); for(int i = 0; i < 30; i++){ myArray.add ("hello" + i); } System.out.println (myArray.toString ()); myArray.remove (5); myArray.remove (10); // System.out.println (myArray.toString ()); // for(int i = 100; i < 5000; i++){ // myArray.add ("hello" + i); // // } // System.out.println (myArray.get (450)); // System.out.println (myArray.get (5020)); } }
数据结构(数组)
最新推荐文章于 2024-05-10 15:08:50 发布