泛型实例—java实战开放经典第10章课后题目

按照要求定义一个操作类:要求完成一个一维数组操作类,其中可以加入任意类型的数据,数组具体的操作类型由程序外部决定,并且可以实现查询功能。

package chapter10;

class Data<T>{
	private T info;
	public Data(T info){
		this.info=info;
	}
	public String toString(){
		return this.info.toString();
	}
	public T getInfo(){
		return info;
	}
}
class Operation{
	private Data[] datas;
	private int foot;
	public Operation(int len){
		if(len>0){
			this.datas=new Data[len];
		}else{
			this.datas=new Data[1];
		}
	}
	public void add(Data data){
		if(this.foot<this.datas.length){
			this.datas[this.foot]=data;
			this.foot++;
		}else{
			System.out.println("数组已满");
		}
	}
	public void search(Object x){
		boolean flag=false;
		for(int i=0;i<this.datas.length;i++){
			if(datas[i].getInfo().getClass()==x.getClass()&&datas[i].toString().equals(x.toString())){
				flag=true;
				System.out.print(x+"存在, ");					
				System.out.print(" "+"对应元素为:");
				System.out.print("data["+i+"]"+"\n");
				break;
			}
			else {
				flag=false;
			}
		}
			if(flag==false) {
				System.out.println(x+"不存在");
			}
}
	public void print(){
		int i=0;
		for(i=0;i<this.datas.length;i++){
			System.out.println("data["+i+"]="+datas[i].toString());
		}
	}
}
public class Job1{
	public static void main(String args[]){
		Operation p=new Operation(4);
		p.add(new Data<Integer>(1));
		p.add(new Data<Float>(1.2f));
		p.add(new Data<String>("海贼王"));
		p.add(new Data<Double>(12.0));
		p.print();
		p.search(1);	
		p.search(3.3f);
		p.search("索隆");
		p.search("海贼王");
		p.search(12.0);
		
	}
}
发布了33 篇原创文章 · 获赞 18 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/lz970704/article/details/83447372