泛型章节练习
编程题
定义一个泛型类 DAO<T>,在其中定义一个Map成员变量,Map的键为String类型,值为T类型。
分别创建以下方法:
(1)public void save(String id, T entity):保存T类型的对象到Map成员变量中
(2)public T get(String id):从Map中获取id对应的对象
(3)public void update(String id, T entity):替换Map中key为id的内容,改为entity对象
(4)public List<T> list():返回Map中存放的所有T对象
(5)public void delete(String id):删除指定id对象
定义一个User类:
该类包含:private成员变量(int类型)id,age;(String类型)name
创建DAO类的对象,分别调用其save、get、update、list、delete方法来操作User对象,使用Junit单元测试类进行调试。
package com15.exercise;
import org.junit.jupiter.api.Test;
import java.util.List;
/**
* @author 甲柒
* @version 1.0
* @title Exercise01
* @package com15.exercise
* @time 2023/3/11 10:26
*/
public class Exercise01 {
public static void main(String[] args) {
}
@Test
public void testList() {
//说明
//这里给T 指定类型是User
DAO<User> userDAO = new DAO<>();
userDAO.save("001", new User(1, 10, "jack"));
userDAO.save("002", new User(2, 14, "tom"));
userDAO.save("003", new User(3, 24, "king"));
userDAO.save("004", new User(4, 34, "smith"));
List<User> list = userDAO.list();
System.out.println("list=" + list);
System.out.println("=====修改后=====");
userDAO.update("003", new User(3, 55, "jerry"));
list = userDAO.list();
System.out.println("list=" + list);
System.out.println("=====删除后=====");
userDAO.delete("001");
list = userDAO.list();
System.out.println("list=" + list);
}
}
/**
* 定义一个泛型类 DAO<T>,在其中定义一个Map成员变量,Map的键为String类型,值为T类型。
* 分别创建以下方法:
* (1)public void save(String id, T entity):保存T类型的对象到Map成员变量中
* (2)public T get(String id):从Map中获取id对应的对象
* (3)public void update(String id, T entity):替换Map中key为id的内容,改为entity对象
* (4)public List<T> list():返回Map中存放的所有T对象
* (5)public void delete(String id):删除指定id对象
* 定义一个User类:
* 该类包含:private成员变量(int类型)id,age;(String类型)name
* 创建DAO类的对象,分别调用其save、get、update、list、delete方法来操作User对象,使用Junit单元测试类进行调试。
* <p>
* 思路分析
* 1.定义User类
* 2.定义Dao<T>泛型类
*/
package com15.exercise;
/**
* @author 甲柒
* @version 1.0
* @title User
* @package com15.exercise
* @time 2023/3/11 10:29
* 该类包含:private成员变量(int类型)id,age;(String类型)name
*/
public class User {
private int id;
private int age;
private String name;
public User(int id, int age, String name) {
this.id = id;
this.age = age;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "\nUser{" +
"id=" + id +
", age=" + age +
", name='" + name + '\'' +
'}';
}
}
package com15.exercise;
import java.util.*;
/**
* @author 甲柒
* @version 1.0
* @title DAO
* @package com15.exercise
* @time 2023/3/11 10:35
* 定义一个泛型类 DAO<T>,在其中定义一个Map成员变量,Map的键为String类型,值为T类型。
* * 分别创建以下方法:
* * (1)public void save(String id, T entity):保存T类型的对象到Map成员变量中
* * (2)public T get(String id):从Map中获取id对应的对象
* * (3)public void update(String id, T entity):替换Map中key为id的内容,改为entity对象
* * (4)public List<T> list():返回Map中存放的所有T对象
* * (5)public void delete(String id):删除指定id对象
*/
public class DAO<T> {
private Map<String, T> map = new HashMap<>();
public T get(String id) {
return map.get(id);
}
public void update(String id, T entity) {
map.put(id, entity);
}
//返回 map 中存放的所有 T 对象
//遍历map 将map的所有value(entity) 封装到ArrayList返回即可
public List<T> list() {
//创建ArrayList
List<T> list = new ArrayList<>();
//遍历
Set<String> keySet = map.keySet();
for (String key : keySet) {
//map.get(Key) 返回就是 User对象->ArrayList
list.add(get(key));
}
return list;
}
public void delete(String id) {
map.remove(id);
}
public void save(String id, T entity) {//把entity保存到map
map.put(id, entity);
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/ea259dc96c8646db6fa93d9dc44a8a37.png)