java开发实战经典(第二版)P308 10.0

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

package book;

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) {
		int i = -1;
		boolean flag = false;
		for (Data data : this.datas) {
			i++;
			if (data.getInfo().getClass() == x.getClass() && data.toString().equals(x.toString())) {
				if (flag == false) {
					System.out.print("存在");
					flag = true;
				}
				System.out.print("\tdata[" + i + "]");
			}
		}
		if (flag == false) {
			System.out.println("不存在");
		} else {
			System.out.println();
		}
	}

	public void print() {
		int i = 0;
		for (Data data : this.datas) {
			System.out.println("data[" + (i++) + "]=" + data.toString() + "\t数据所属类:"
					+ data.getInfo().getClass().toString().split(" ")[1]);
		}
	}
}

class Person {
	private String name;

	public Person(String name) {
		this.name = name;
	}

	public String toString() {
		return name;
	}
}// 写个自己定义的Peron类

public class JiOu {
	public static void main(String args[]) {
		Operation op = new Operation(6);
		op.add(new Data<Integer>(10));
		op.add(new Data<Float>(12.0f));
		op.add(new Data<String>("13"));
		op.add(new Data<Integer>(10));
		op.add(new Data<Double>(12.0));
		op.add(new Data<Person>(new Person("张三")));
		op.print();
		op.search(10); // 查询Internet类
		op.search(12.0);// 查询Double类
		op.search(12.0f);// 查询Float类
		op.search("13");// 查询String类
		Person a = new Person("李四");
		op.search(a);// 查询Person类
	}
}

运行结果:

data[0]=10	数据所属类:java.lang.Integer
data[1]=12.0	数据所属类:java.lang.Float
data[2]=13	数据所属类:java.lang.String
data[3]=10	数据所属类:java.lang.Integer
data[4]=12.0	数据所属类:java.lang.Double
data[5]=张三	数据所属类:book.Person
存在	data[0]	data[3]
存在	data[4]
存在	data[1]
存在	data[2]
不存在

原文地址:https://blog.csdn.net/weixin_38289567/article/details/71305452

猜你喜欢

转载自blog.csdn.net/Javaxiaobaismc/article/details/81369935