试题:设置一个类, 命名为 MyList,
类中包含属性:Object[] element;
方法有如下几个:
增加方法 add : 可以向数组属性中依次存储 Object,数组内容存满时,
需实现动态扩容(详解在下面)。
删除方法 remove : 可以根据数据或下标,从数组属性中删除 Object
数据,删除后,数组后续 元素需前移。
查询方法 get : 方法传入下标,返回数组中指定下标的数据。
当前存储数据量 size : 获取当前存储的有效数据长度
动态扩容详解: 无需真正增加原数组的容量,只用将原内容复制到新的
大数组,然后让原数组名称重新等于大数组即 可。由于原数组数据在堆中,失
去引用会被 GC 自动回收。
package text1;
import java.util.Scanner;
public class Demo3 {
static Scanner input=new Scanner(System.in);
public static void main(String[] args) {
MyList l=new MyList();
while(true) {
System.out.println("请选择你的功能1.添加数据(并扩容)2.删除数据 3.查看数据 4.查看数据大小 ");
int n1=input.nextInt();
switch (n1) {
case 1:
System.out.println("请输入你要输入信息的条数");
int n=input.nextInt();
for(int i=0;i<n;i++) {
System.out.println("请输入");
String str =input.next();
l.Object[i]=str;
l. add(l.Object,n);
}
continue;
case 2:
l.remove(l.Object);
continue;
case 3:
l.get (l.Object);
continue;
case 4:
l.size(l.Object);
case 5:
break;
}
}
}
static class MyList{
String []Object = new String[100];
int element;
void add(String [] Object,int n) {
MyList l2=new MyList();
l2.Object= new String[1000];
for(int i=0;i<n-1;i++) {
l2.Object[i]=Object[i];
}
Object=l2.Object;
}
void remove(String []Object) {
System.out.println("请输入你要删除的下标");
int i=input.nextInt();
int a=i;
for(;i<Object.length-1-a;i++) {
Object[i]=Object[i+1];
if(Object[i]==null)
break;
}
}
void get (String[]Object) {
System.out.println("请输入你要查看的下标");
int i=input.nextInt();
System.out.println(Object[i]);
}
void size(String[]Object) {
int length=0;
for(int i=0;i<Object.length;i++) {
if(Object[i]!=null)
length++;
}
System.out.println(length);
}
}
}