由于数组长度不可变的缘故,在实现增删的时候,需要对数组的长度进行相应的处理,
增加内容就要增加数组长度,指定下标添加元素就需要将扩容后的数组元素从倒数第二位向倒数第一位(扩容后的倒数第一位是null,倒数第二位是未扩容之前的倒数第一位)移动,循环移动全部元素,直至要插入的下标即可(指定下标之前的元素不变)。代码拙劣仅供参考。
import java.util.Arrays;
import java.util.Scanner;
public class Test2 {
String name;
int age;
double score;
public Test2(String name, int age, double score) {
this.name = name;
this.age = age;
this.score = score;
}
public String toString()
{
return "姓名:"+name+" 年龄:"+age+" 工资:"+score;
}
public static void main(String []args)
{
Test2 arr[]={
new Test2("张三",15,2000),
new Test2("李四",18,3000),
new Test2("王五",16,2500),
new Test2("孙六",17,2100),
};
for (int i=0;i<arr.length;i++) //遍历对象数组
{
System.out.println(arr[i]);//打印对象数组
}
System.out.println("请输入你要增添元素的位置");
arr=Arrays.copyOf(arr,arr.length+1);
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
for (int i=arr.length-1;i>a;i--)//z增加元素需要从扩容后的倒数第二位向倒数第一位移动,从头移动会覆盖,故需要倒序移动
{
arr[i]=arr[i-1];
}
System.out.println("请输入增添元素的名字 ");
String a1=sc.next();
System.out.println("请输入增添元素的年龄 ");
int a2=sc.nextInt();
System.out.println("请输入增添元素的工资 ");
double a3=sc.nextDouble();
arr[a]=new Test2(a1,a2,a3);
System.out.println("你要增添元素为:"+arr[a]);
System.out.println("增添后的内容如下 ");
for(Test2 k:arr)
{
System.out.println(k);
}
}
}
注:以上代码均来自实际编写,如有问题请留言,转载请注明出处。