Java高级-泛型常见课后作业练习题之一

定义个泛型类DAO<T>,在其中定义一个Map成员变量, Map的键为String类型,值为T类型。

分别创建以下方法: .

public void save(string id,T entity)在 T类型的对象到Map成员变量中.

public T get(string id):从map中获取id对应的对象.

public void update(String id, T entity):替换map 中key为id的内容,改为entity 对象.

public List<T> list();返回map中存放的所有T对象.

public void delete(string id):删除指定id对象.

定义一个User类:

该类包含: private成员变量(int类型) id, age; (String类型) name.

定义一个测试类:

创建DAO类的对象,分别调用其save, get, update, list, delete方法来操作User对象,使单元测试类进行测试。

DAO类

package Ch02Homeworrk;

import java.util.*;

//定义个泛型类DAO<T>
public class DAO<T> {
	//定义一个Map成员变量, Map的键为String类型,值为T类型
	Map<String,T> m;
	public DAO() {
	}
	public DAO(Map<String, T> m) {
		this.m = m;
	}
	
	public Map<String, T> getM() {
		return m;
	}
	//public void save(String id,T entity)在 T类型的对象到Map成员变量中.
	public void save(String id,T entity) {
		m.put(id, entity);
	}
	//public T get(String id):从map中获取id对应的对象.
	public T get(String id) {
		T a = m.get(id);
		return a;
	}
	//public void update(String id, T entity):替换map 中key为id的内容,改为entity 对象.
	public void update(String id, T entity) {
		m.replace(id, entity);
	}
	//public List<T> list();返回map中存放的所有T对象.
	public List<T> list(){
		List<T> l = new ArrayList<T>();
		Collection<T> c =  m.values();
		for(T t : c){
            l.add(t);
        }
		return l;
	}
	//public void delete(String id):删除指定id对象.
	public void delete(String id) {
		m.remove(id);
	}

	
}

User类

package Ch02Homeworrk;

//定义一个User类:
public class User {
	//private成员变量(int类型) id, age; (String类型) name.
	private int id;
	private String name; 
	private int age;
	public User() {
		super();
		// TODO Auto-generated constructor stub
	}
	public User(int id, String name, int age) {
		super();
		this.id = id;
		this.name = name;
		this.age = age;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	@Override
	public String toString() {
		return "User [id:" + id + ", name:" + name + ", age:" + age + "]";
	}
}

DAOTest类

package Ch02Homeworrk;

import java.util.*;

//定义一个测试类:
public class DAOTest {
	public static void main(String[] args) {
	//创建DAO类的对象,
	DAO<User> d = new DAO<User>(new TreeMap<String,User>());
	//分别调用其save, get, update, list, delete方法来操作User对象,使单元测试类进行测试。
	//调用其save方法
	d.save("a", new User(101,"zhangsanfeng",21));
	d.save("b", new User(102,"zhangsan",20));
	d.save("c", new User(103,"lisi",21));
	//遍历
	System.out.println("添加map对象,并遍历输出");
	Set<String> s = d.getM().keySet();
	for(String str:s) {
		System.out.println("key:"+str+"\tvalue:"+d.getM().get(str));
	}
	System.out.println("===============================================");
	//调用其get方法
	System.out.println("查找并输出键为b的值");
	System.out.println(d.get("b"));
	System.out.println("===============================================");
	//调用其list方法
	System.out.println("使用list方法遍历输出map中存放的所有User对象");
	for(User u : d.list()) {
		System.out.println(u);
	}
	System.out.println("===============================================");
	//调用其update方法
	System.out.println("更改键为b的值,并遍历输出");
	d.update("b", new User(105,"wangmazi",23));
	Set<String> s1 = d.getM().keySet();
	for(String str:s1) {
		System.out.println("key:"+str+"\tvalue:"+d.getM().get(str));
	}
	System.out.println("===============================================");
	//调用其delete方法
	d.delete("b");
	System.out.println("删除键为b的map对象,并遍历输出");
	Set<String> s2 = d.getM().keySet();
	for(String str:s2) {	
		System.out.println("key:"+str+"\tvalue:"+d.getM().get(str));
	}
	System.out.println("===============================================");
	}
}

程序运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员Ale-阿乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值