码迷,mamicode.com
首页 > 其他好文 > 详细

泛型Practices

时间:2020-06-08 19:26:26      阅读:84      评论:0      收藏:0      [点我收藏+]

标签:over   amp   list   port   日期   use   one   指定   system   

 

1: 

定义个泛型类 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 对象, 使用 Junit 单元测试类进行测试。

 

Dao类

技术图片
package June.JuneEight.JuneEightAfternoon;

import java.util.*;

public class JuneEightAfternoonDao<T> {
    private HashMap<String,T> hashMap = new HashMap<String, T>();

    public void save(String id,T entity){
        hashMap.put(id,entity);
    }

    public T getT(String id){
        return hashMap.get(id);
    }

    public void update(String id, T entity){


        if(hashMap.containsKey(id)){
            hashMap.put(id,entity);
        }

    }

    public List<T>list(){
//        Collection listCollection = hashMap.values();
//
//        List<T> list = new ArrayList<>();
//        list.add(listCollection);

        ArrayList<T> list = new ArrayList();
        Collection <T> collection = hashMap.values();
        for (T e:collection
             ) {
            list.add(e);
        }
        return list;
    }

    public void deletes(String id){
        hashMap.remove(id);
    }
}
Dao类

 

 

User类

技术图片
package June.JuneEight.JuneEightAfternoon;

import java.util.Objects;

public class JuneEightAfternoonUser<T> {

    private int id;
    private int age;
    private String name;

    public JuneEightAfternoonUser(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 "JuneEightAfternoonUser{" +
                "id=" + id +
                ", age=" + age +
                ", name=‘" + name + ‘\‘‘ +
                ‘}‘;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        JuneEightAfternoonUser<?> user = (JuneEightAfternoonUser<?>) o;
        return id == user.id &&
                age == user.age &&
                Objects.equals(name, user.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id, age, name);
    }
}
User类

切记: Map使用的自定义类要重写equals()方法

 

测试类

技术图片
    @Test
    public void TestOne(){
        JuneEightAfternoonDao<JuneEightAfternoonUser> dao = new JuneEightAfternoonDao<JuneEightAfternoonUser>();
        JuneEightAfternoonUser userOne = new JuneEightAfternoonUser(1,18,"老王");
        dao.save("1001",userOne);
        System.out.println(dao.getT("1001"));

        dao.update("1002",new JuneEightAfternoonUser(1,46,"隔壁老王"));

        System.out.println(dao.list());
        dao.save("1002",new JuneEightAfternoonUser(2,46,"隔壁老王"));
        dao.save("1003",new JuneEightAfternoonUser(3,23,"隔壁小姐姐"));
        System.out.println(dao.list());
        dao.deletes("1003");
        System.out.println(dao.list());
    }
测试类

 

 

 

 

 

2: 

定义一个 Employee 类, 
该类包含:private 成员变量 name,age,birthday,其中 birthday 为 MyDate 类的 对象; 
并为每一个属性定义 getter, setter 方法; 
并重写 toString 方法输出 name, age, birthday 
 
MyDate 类包含: private 成员变量 month,day,year;并为每一个属性定义 getter, setter 方法; 
 
创建该类的 5 个对象,并把这些对象放入 TreeSet 集合中(TreeSet 需使用泛型 来定义), 分别按以下两种方式对集合中的元素进行排序,并遍历输出: 
 
1). 使 Employee 继承 Comparable 接口,并按 name 排序 
2). 创建 TreeSet 时传入 Comparator 对象,按生日日期的先后排序。

 

泛型Practices

标签:over   amp   list   port   日期   use   one   指定   system   

原文地址:https://www.cnblogs.com/zhaoyunlong/p/13067401.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!