package cn.pcg.util; /** * 封装数组的工具类,优化数组的长度。使其长度变得弹性 * 提供一些增删的方法 */ public class MyArrayBox<T> { private static final int ARRAY_MINLENGTH=0;//数组的最小长度 private T[] array;//数组 public MyArrayBox(){ //构造器 this.array=(T[]) new Object[ARRAY_MINLENGTH];//初始化创建一个数组 } /** * 清除缓存 */ public void clearCache(T[] newArray){ this.array=null;//删除原数组 this.array=newArray;//改变引用 newArray=null;//删除新数组 } //增加的方法 public void add(T obv){ int newLenth = this.array.length+1; T[] newArray = (T[]) new Object[newLenth]; if(this.array.length>0){ for (int i=0;i<this.array.length;i++){ newArray[i]=this.array[i]; } } newArray[newArray.length-1]=obv;//插入新元素 clearCache(newArray); } //判断某个元素是否存在ArrayBox中;true代表存在,false不存在 public boolean isExist(int i){ boolean isExist=false;//默认不存在 for (int j=0;j<this.array.length;j++){ if (i==j && this.array[i]==this.array[j]){//找到当前元素对应的索引是否一致,如果不一致不存在 isExist=true; break; } } return isExist; } //删除对应i索引的元素 public boolean del(int i){ boolean isdel=false;//默认删除失败 T[] newArray = (T[]) new Object[this.array.length-1]; if(isExist(i)){ int t=0;//控制array数组的长度 for (int j=0;j<this.array.length;j++){ if(t<newArray.length && i!=j){ //新数组存值 newArray[t++]=this.array[j]; } } clearCache(newArray);//清除缓存 isdel=true; } return isdel; } //获得索引值所对应的数组的值 public T get(int i){ return this.array[i]; } //获得ArrayBox的长度 public int size(){ return this.array.length; } }
数组的封装
最新推荐文章于 2024-01-18 20:20:01 发布