面向对象高级训练

试题:设置一个类, 命名为 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);	
	}

}

}

猜你喜欢

转载自blog.csdn.net/chh1ctrl/article/details/113525016