面向对象类的设计
设计一个类替代数组可以做的事
充当一个小容器 能添加元素 获取元素 删除元素
充当一个小容器 能添加元素 获取元素 删除元素
package com.sum1; public class ArrayBox { //设计一个类替代数组可以做的事 //充当一个小容器 能添加元素 获取元素 删除元素 //属性 public int[] elementData = new int[10];//用数组来存储元素 int size=0;//记录数组中存放元素的个数 //方法 //设计一个方法 该方法删除指定位置的元素 public void remove(int index){ int BeDel = elementData[index]; for(int i=index;i<size-1;i++){ elementData[i] = elementData[i+1]; } elementData[--size]=0; } //设计一个方法 该方法可以判断元素是否存在 public void isExist(int index){ if(index<0 || index >= size){//如果index不满足条件 则抛出异常 throw new BoxIndexOutOfBoundsException("index:"+index+"size:"+size); } } //设计一个方法 该方法比较数组长度与用户需要长度 public void ensureCapacity(int minCapacity){ if(minCapacity > elementData.length){//数组长度比用户需要的小 则需要进行扩容 this.enLarge(minCapacity); } } //设计一个方法 该方法扩大数组的容量 public void enLarge(int minCapacity){ int oldCapacity = elementData.length; int newCapacity = oldCapacity + (oldCapacity>>1);//先设置新的数组长度为原先的1.5倍 if(newCapacity < minCapacity){//如果还未达到用户需要的最小长度,则直接使用用户需要的最小长度 newCapacity = minCapacity; } elementData = this.CopyOfOld(elementData,newCapacity); } //设计一个方法,将旧数组的元素全部搬运到新数组中来,将生成的新数组返回 public int[] CopyOfOld(int[] oldArray,int newCapacity){//传递两个参数,一个是旧数组,一个是新数组的长度 int[] newArray = new int[newCapacity];//定义一个新数组 for(int i=0;i<oldArray.length;i++){//搬运数组元素 newArray[i] = oldArray[i]; } return newArray; } //设计一个方法 该方法能添加元素 public boolean add(int element){//方法执行后返回添加完元素后的数组 //判断比较数组长度与用户需要长度 ensureCapacity(size+1);//有效元素长度加1 elementData[size++] = element;//将用户传递参数添加到数组中 return true; } //设计一个方法 该方法能获得数组元素 public int get(int index){ //判断index位置是否有元素存在 this.isExist(index); return elementData[index]; } //设计一个方法 该方法能删除数组中元素,返回删除元素后的数组 public int[] delete(int index){ //判断index位置是否有元素存在 this.isExist(index); //调用方法删除元素 this.remove(index); return elementData; } }
package com.sum1; public class BoxIndexOutOfBoundsException extends RuntimeException{ public BoxIndexOutOfBoundsException(){} public BoxIndexOutOfBoundsException(String msg){}
}
package com.sum1; public class Test { public static void main(String[] args) { ArrayBox array = new ArrayBox();//创建一个ArrayBox的对象 for(int i=1;i<=5;i++){//执行add()方法 array.add(i*10); } System.out.println(array.size); int e = array.get(1);//执行获取元素方法 System.out.println(e); array.delete(2);//执行删除元素方法 for(int i=0;i<array.size;i++){ System.out.print(array.elementData[i]+" "); } } }

浙公网安备 33010602011771号