定义一个MyList接口,并使用数组的方法来实现接口

任务描述

要求:

  1. MyList接口包含六个方法:

     void add(Object obj):往列表尾部添加对象

     Object get(int index):从列表中获取索引为i的对象

     void clear():清空所有的对象

     boolean isEmpty():判断列表中是否有对象

     int size():获取列表中对象的个数

     int capacity():所分配的空间大小

  2. MyObjectArray类实现MyList接口,内部以数组的方式实现,要求:

     构造函数MyObjectArray(int incSize):参数incSize为数组初始化大小和空间的增量。若用户调用incSize非法,则设为默认值5。

     当调用add()方法往试图往MyObjectArray中增加对象时,如果内部数组已满,则增加数组大小,增量为incSize。

     调用clear()方法可以清空所有通过add()方法加入的对象。

     调用get(int index)方法时,如果传入的参数非法,则返回null对象,否则返回对应的对象。

  3. MyDoubleArray类也实现ReList接口,内部依旧通过数组实现,要求:

     构造函数MyDoubleArray(int initSize):参数initSize表示数组的初始化大小。若用户调用initSize非法,则设为默认值10。

     当调用add()方法往MyDoubleArray列表里面增加对象时,如果其内部数组已满,则将数组的长度变为当前长度的2倍。

     其他方法和MyObjectArray一致

####提示: 增加数组长度的方法:使用java.util.Arrays.copyOf()方法,用法请查阅Java API文档。

代码:

MyList.java

package step1;
//  ****fly****
public interface MyList {
	public void add(Object obj);
	public Object get(int index);
	public void clear();
	public boolean isEmpty();
	public int size();
	public int capacity();
}

MyObjectArray.java

package step1;
//  ****fly****
import java.util.Arrays;
public class MyObjectArray implements MyList {
	private Object[] Array=null;
	private int cindex=0;
	private int incSize;//数组长度增量
	public MyObjectArray() {
		//构造函数
	}
	public MyObjectArray(int incSize) {
		if(incSize<0) {
			this.incSize=5;
		}else {
			this.incSize=incSize;
		}
		this.Array=new Object[this.incSize];
	}
	@Override
	public void add(Object obj) {
		// TODO Auto-generated method stub
		if(cindex==Array.length) {//数组最后一位元素下标等于数组长度,说明数组已满,否则直接将其赋值为obj
			Array=Arrays.copyOf(Array,Array.length+incSize);
		}Array[cindex]=obj;
		cindex++;
	}
	@Override
	public Object get(int index) {
		// TODO Auto-generated method stub
		Object obj=null;
		if(index>0 && index<cindex) {
			obj=Array[index];
		}
		return obj;
	}
	@Override
	public boolean isEmpty() {
		// TODO Auto-generated method stub
		boolean flag=false;
		if(Array[0]==null) {
			flag=true;
		}
		return flag;
	}
	@Override
	public int size() {
		// TODO Auto-generated method stub
		return cindex;
	}
	@Override
	public int capacity() {
		// TODO Auto-generated method stub
		return this.Array.length;
	}
	@Override
	public void clear() {
		// TODO Auto-generated method stub
		this.Array=new Object[5];
		this.cindex=0;
	}
}

MyDoubleArray.java

package step1;
//  ****fly****
import java.util.Arrays;
public class MyDoubleArray implements MyList{
	private Object[] Array=null;
	
	private int initSize;
	private int cindex=0;
	
	public  MyDoubleArray(){
		//构造函数
	}
	public MyDoubleArray(int initSize) {
		if(initSize<0) {
			this.initSize=10;
		}else {
			this.initSize=initSize;
		}this.Array=new Object[this.initSize];
	}
	@Override
	public void add(Object obj) {
		// TODO Auto-generated method stub
		if(cindex==Array.length) {
			Array=Arrays.copyOf(Array, Array.length+Array.length);
		}Array[cindex]=obj;
		cindex++;
	}

	@Override
	public Object get(int index) {
		// TODO Auto-generated method stub
		if(index>0 && index<cindex) {
			return Array[index];
		}else {
		return null;
		}
	}

	@Override
	public void clear() {
		// TODO Auto-generated method stub
		this.Array=new Object[10];
		this.cindex=0;
	}

	@Override
	public boolean isEmpty() {
		// TODO Auto-generated method stub
		boolean flag=false;
		if(Array[0]==null) {
			flag=true;
		}
		return flag;
	}

	@Override
	public int size() {
		// TODO Auto-generated method stub
		
		return cindex;
	}

	@Override
	public int capacity() {
		// TODO Auto-generated method stub
		return this.Array.length;
	}
	
	
}

//参考一位大佬代码做的这题。MyDoubleArray类也实现ReList接口类似于MyObjectArray类实现MyList接口,只需对相关方法进行修改即可。

相关知识点记录:

1.Arrays的copyOf()方法传回的数组是新的数组对象,改变传回数组中的元素值,不会影响原来的数组。copyOf的第二个自变量指定要建立的新数组长度,如果新数组的长度超过原来数组的长度,则保留数组默认值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值