使用泛型的Map集合案例
2019-08-10 14:40
78 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/a805814077/article/details/99072799
定义个泛型类 DAO,在其中定义一个Map 成员变量,Map 的键为 String 类型,值为 T 类型。
分别创建以下方法:
public void save(String id,T entity): 保存 T 类型的对象到 Map 成员变量中
T get(String id):从 map 中获取 id 对应的对象
void update(String id,T entity):替换 map 中key为id的内容,改为 entity 对象
List list():返回 map 中存放的所有 T 对象
void delete(String id):删除指定 id 对象
定义一个 User 类:
该类包含:private成员变量(int类型) id,age;(String 类型)name。
创建 DAO 类的对象, 分别调用其 save、get、update、list、delete 方法来操作 User 对象,
使用 Junit 单元测试类进行测试。
创建DAO类
package com.yzy.map; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; /** * @className DAO.java * @author yangsir * @version V1.0 * @date 2019年8月10日-下午1:38:18 * @description 泛型 * * 定义个泛型类 DAO<T>,在其中定义一个Map 成员变量,Map 的键为 String 类型,值为 T 类型。 * 分别创建以下方法: public void save(String id,T entity): 保存 T 类型的对象到 Map * 成员变量中 T get(String id):从 map 中获取 id 对应的对象 void update(String * id,T entity):替换 map 中key为id的内容,改为 entity 对象 List<T> list():返回 * map 中存放的所有 T 对象 void delete(String id):删除指定 id 对象 * * */ public class DAO<T> { Map<String, T> map;// 题目说的是要创建一个Map类型的变量,Map有键的类型,值的类型 public void save(String id, T entity) {// 将Map里面的添加元素的put方法写成自己的save方法,传入对应的参数即可 map.put(id, entity); } T get(String id) {// 将Map里面的获取对应对象的get方法写成自己的get方法,传入对应的参数即可 return map.get(id); } void update(String id, T entity) {// 将Map里面的替换元素的replace方法写成自己的update方法,传入对应的参数即可 map.replace(id, entity); } List<T> list() {// 遍历所有T对象 List<T> list = new ArrayList<T>();// 首先创建一个list集合对象 Set<String> set = map.keySet();// 然后需要通过Map里面的keySet()方法来获取键值,它的返回值为Set,所以我们要创建Set对象 Iterator<String> it = set.iterator();// 创建迭代器对象传入set while (it.hasNext()) {// 迭代 String key = it.next();// 将每次迭代的key保存下来 System.out.println(map.get(key));// 通过Map里面的get(key)方法来获取对应的值 } return list;// 返回list集合 } void delete(String id) {// 将Map里面的删除对象的remove方法写成自己的delete方法,传入对应的参数即可 map.remove(id); } }
创建User类
package com.yzy.map; /** * @className User.java * @author yangsir * @version V1.0 * @date 2019年8月10日-下午1:59:46 * @description private成员变量(int类型) id,age;(String 类型)name。 */ //创建User类 public class User { private int id; private int age; private String name; public User() { super(); } public User(int id, int age, String name) { super(); 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; } // 因为后面要输出,所以重写一下toString方法 @Override public String toString() { return "User [id=" + id + ", age=" + age + ", name=" + name + "]"; } }
创建测试类TestDAO
package com.yzy.map; import java.util.HashMap; import org.junit.Test; /** * @className TestDAO.java * @author yangsir * @version V1.0 * @date 2019年8月10日-下午2:00:58 * @description 创建 DAO 类的对象, 分别调用其 save、get、update、list、delete 方法来操作 User 对象, 使用 * Junit 单元测试类进行测试。 */ public class TestDAO { @Test public void test1() { DAO<User> d = new DAO<User>();// 创建一个DAO对象d,泛型为User d.map = new HashMap<String, User>();// 对map进行实例化,任何对象在使用的时候都需要初始化,前面我们没有给map赋值,这里不初始化直接使用的话会报空指针异常 d.save("a", new User(1, 23, "张三"));// 添加元素 d.save("b", new User(2, 24, "李四")); d.save("c", new User(3, 25, "王五")); d.save("d", new User(4, 26, "赵六")); System.out.println(d.map);// 直接输出 System.out.println("======================================="); } @Test public void test2() { DAO<User> d = new DAO<User>();// 创建一个DAO对象d,泛型为User d.map = new HashMap<String, User>();// 对map进行实例化,任何对象在使用的时候都需要初始化,前面我们没有给map赋值,这里不初始化直接使用的话会报空指针异常 d.save("a", new User(1, 23, "张三"));// 添加元素 d.save("b", new User(2, 24, "李四")); d.save("c", new User(3, 25, "王五")); d.save("d", new User(4, 26, "赵六")); System.out.println(d.get("a"));// 通过获取User的id来获取其的entity值 System.out.println(d.get("b")); System.out.println(d.get("c")); System.out.println(d.get("d")); System.out.println("======================================="); } @Test public void test3() { DAO<User> d = new DAO<User>();// 创建一个DAO对象d,泛型为User d.map = new HashMap<String, User>();// 对map进行实例化,任何对象在使用的时候都需要初始化,前面我们没有给map赋值,这里不初始化直接使用的话会报空指针异常 d.save("a", new User(1, 23, "张三"));// 添加元素 d.save("b", new User(2, 24, "李四")); d.save("c", new User(3, 25, "王五")); d.save("d", new User(4, 26, "赵六")); d.update("a", new User(7, 27, "周七"));// 删除元素 System.out.println(d.map); System.out.println("======================================="); } @Test public void test4() { DAO<User> d = new DAO<User>();// 创建一个DAO对象d,泛型为User d.map = new HashMap<String, User>();// 对map进行实例化,任何对象在使用的时候都需要初始化,前面我们没有给map赋值,这里不初始化直接使用的话会报空指针异常 d.save("a", new User(1, 23, "张三"));// 添加元素 d.save("b", new User(2, 24, "李四")); d.save("c", new User(3, 25, "王五")); d.save("d", new User(4, 26, "赵六")); d.list();// 通过我们写好的遍历方法来进行遍历,与上面不同的是上面输出的是一个集合里面的元素,也就是说所有的元素在集合里一起看做为一个元素,这里是进行单个输出 } @Test public void test5() { DAO<User> d = new DAO<User>();// 创建一个DAO对象d,泛型为User d.map = new HashMap<String, User>();// 对map进行实例化,任何对象在使用的时候都需要初始化,前面我们没有给map赋值,这里不初始化直接使用的话会报空指针异常 d.save("a", new User(1, 23, "张三"));// 添加元素 d.save("b", new User(2, 24, "李四")); d.save("c", new User(3, 25, "王五")); d.save("d", new User(4, 26, "赵六")); d.delete("a");// 删除元素 d.delete("b"); d.delete("c"); d.list();// 遍历 } }
相关文章推荐
- 【Map使用】遍历Map集合案例keySet()和 entrySet()
- 使用map集合泛型保存对象
- 黑马程序员_Java语言_集合框架(一些使用案例及泛型)
- 01-java基础加强,eclipse工具使用,快捷键,断点调试,单元测试,jdk5新特性,增强for循环,集合map,list,可变参数,枚举,反射,泛型
- 关于Hive中的复杂数据类型Array,Map,Structs的一些使用案例
- 使用Map集合求出一个字符窜中各个字符的个数
- 机房收费系统之泛型集合的使用
- Map集合遍历的四种方式理解和简单使用
- Java集合工具Map、List、Set、Array使用小结
- Map集合框架的使用
- 黑马程序员-----泛型,Map集合
- 黑马程序员_Java(登陆注册案例,set集合,map集合,Collections)
- Map集合遍历的四种方式理解和简单使用
- Java语言基础——06.集合框架(2)泛型和Map集合
- java基础知识5--集合类(Set,List,Map)和迭代器Iterator的使用
- 泛型集合的使用
- 三层架构中使用实体类填充泛型集合代替DataTable解决方案(ASP.NET+C#)
- S2_二本第三章使用集合组织相关数据(泛型)
- Java集合Collection、List、Set、Map使用详解
- 集合框架(泛型概述和基本使用)