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

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值