定义个泛型类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("===============================================");
}
}
程序运行结果