1.需求代码1~6行
创建一个名为Array的类,当不传参则调用无参构造时,可以得到长度为0的数组,声明数组时长度是不确定的,所以长度需要单独拿个变量装,待不同情况时给予值。因为直接打印数组会得到数组的地址,[ ] 为字符串,所以我们需要重写toString方法才能更方便的打印无参和多参时的俩种情况
2.需求代码7~9行
当传入参数时,把参数添加致数组最后一位,因为数组长度一旦声明无法改变,我们需要创建一个新数组,长度为老数组长度+1,这样就可以使得内容能够添加进入
3.需求代码10~结束
删除的需求出现时,我们能够联想到扩容,删除也就是缩容,只不过是新数组长度+1和-1的区别,在这个需求上加上一个if判定,当遍历数组到该下标时我们就不把它装进数组,其他的都装进新数组,最后赋值给老数组即可。需要boolean类型的返回值,就把返回值定义为boolean,需要用到该布尔值时,在调用该方法出定义一个boolean类型接收即可
以下为实现代码: Array类public class Array {
//数组
public Object[] arr = new Object[0];
//长度属性
public int length = 0;
//无参构造
public Array() {
}
//多参构造
public Array(Object... arr) {
this.length = arr.length;//将传入的多参数组长度赋值给当前长度
this.arr = arr;//把传入的多参数组内容一同赋值给这个类的数组
}
//重写toString方法
@Override
public String toString() {
if (length == 0) {///当不传参则调用无参构造时,可以得到长度为0的数组
return ("[ ]"); //用字符串拼接可以得到 [ ]
}
String str = "[";//一个简单的字符串拼接,注意灵活应用
for (Object item : this.arr) {
str +=" " + item + " ";//此处" "是为了隔开数组里的内容
}
str += "]";
return str;
}
//push
//接收一个参数,放在数组最后一位(添加Add)
public void push(Object value) {
this.length += 1;
Object[] newArray = new Object[this.length];//新数组
for (int i = 0; i < this.length; i++) {
if (i < this.length - 1) {//上面老数组长度+1,这里要-1
newArray[i] = this.arr[i];
} else {//添加的内容
newArray[i] = value;
}
}
//赋值内容
this.arr = newArray;
}
//remove
//接收一个下标,删除数组中该下标对应的内容(删除delete),并返回布尔值
public boolean remove(int index) {
//先进行判断,看接收的下标是否在这个数组长度内
//index >= this.length,是因为数组最后一个下标是数组长度-1,所以和数组长度相同也不是在数组长度之内的
if (index < 0 || index >= this.length) {
return false;//不在数组里,返回false,并结束方法
}
//和添加如出一辙,只不过需要一个下标,用于把内容存放在新数组
this.length -= 1;
Object[] newArray = new Object[this.length];//新数组
int j = 0;
for (int i = 0; i < this.arr.length; i++) {//注意!这里是已经有内容的数组,不能取this.length
if (index == i) {//当遍历到该下标时,跳过,不存放入新数组
continue;
} else {
newArray[j] = this.arr[i];
j++;//存放一次,往下一个下标存放
}
}
//赋值内容
this.arr = newArray;
return true;//删除成功,返回true
}
}
测试类,main
public class ArrayTest {
public static void main(String[] args) {
//无参
Array array = new Array();
System.out.println(array + ",数组长度为" + array.length);
System.out.println("===============================");
//多参
Array array1 = new Array("张三","李四");
System.out.println(array1 + ",数组长度为" + array1.length);
System.out.println("===============================");
//调用push,往数组添加实参
array1.push("王五");
System.out.println(array1 + ",数组长度为" + array1.length);
System.out.println("===============================");
//调用remove,传入下标
array1.remove(2);
System.out.println(array1 + ",数组长度为" + array1.length);
System.out.println("===============================");
}
}
输出结果:
[ ],数组长度为0 =============================== [ 张三 李四 ],数组长度为2 =============================== [ 张三 李四 王五 ],数组长度为3 =============================== [ 张三 李四 ],数组长度为2 ===============================
(本文为接触Java不久的菜鸟所写,如有误区,还望各位大佬多多指教,菜鸟虚心受教)



