泛型练习(创建泛型类操作Map集合里的对象)

11【泛型、Map、异常】 11【双列集合、异常】 一、Map双列集合 1.1 Map集合概述 Map 用于保存具有映射关系的数据,如一个学生的ID对应一个学生,一个商品的ID对应一个商品,一个部门ID对应多个员工;这种具有对应关系的数据成为映射; 因此 Map 集合里保存着两组值,一组值用于保存 Map 里的 Key,另外一组用于保存 Map 里的 Value,Map 中的 key 和 value 都可以是任何引用类型的数据;Map 中的 Key 不允许重复,HashMap对key的存取和 HashSet 一样,仍然采用的... 阅读详情

泛型学习练习。。

建立DAO.java 泛型类,用来操作Map集合里的对象(增删改查)

创建User.java,含有属性name, id, age;也可以创建其他对象进行map集合操作

创建TestDao.java进行泛型类测试.


首先是User对象类

package Test8;

public class User {
/*
 * 定义一个 User 类:
该类包含:private成员变量(int类型) id,age;(String 类型)name。
 */
	private int id;
	private int age;
	private String 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 "User [id=" + id + ", age=" + age + ", name=" + name + "]";
	}
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + age;
		result = prime * result + id;
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		User other = (User) obj;
		if (age != other.age)
			return false;
		if (id != other.id)
			return false;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		return true;
	}
	public User(int id, int age, String name) {
		super();
		this.id = id;
		this.age = age;
		this.name = name;
	}
}
再来是泛型类:

package Test8;
import java.util.*;
import java.util.Map.Entry;

public class DAO<T> {
/*
 * 定义个泛型类 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 对象

 */
	private Map<String, T> map;
	//获取map集合
	public Map<String, T> getMap(){
		return map;
	}
	//设定map集合
	public void setMap(Map<String, T> map){
		this.map = map;
	}
	//新增、修改 key-value
	public void save(String id, T entity){
		map.put(id, entity);
	}
	//返回对应id的Value值
	T get(String id){
		return map.get(id);
	}
	//更新同一Id的Value信息
	void update(String id, T entity){
		map.put(id, entity);
	}
	//返回所有Value信息
	Collection<T> list(){
		//List<T> list = new ArrayList<T>();
		Collection<T> list = map.values();
		return list;
	}
	
	List<T> list1(){
		List<T> list = new ArrayList<T>();
		for(String s: map.keySet()){
			list.add(map.get(s));
		}
		return list;
	}
	
	//删除map中一个元素
	void delete(String id){
		map.remove(id);
	}
	
	//返回左右Key
	Set<String> getKey(){
		Set<String> s = new HashSet<String>();
		return s = map.keySet();
		
	}
}
把User对象存入Map集合,使用DAO进行操作增删改查

package Test8;

import org.junit.Test;
import java.util.*;
import java.util.Map.Entry;

/*
 * 创建 DAO 类的对象, 分别调用其 save、get、update、list、delete 方法来操作 User 对象,
 */
public class TestDAO {
@Test
	public void test1(){
		DAO<User> dao = new DAO<User>();
		Map<String, User> map = new HashMap<String, User>();
		dao.setMap(map);
		//map = dao.getMap();
		dao.save("FF", new User(1,23,"RayLu"));
		dao.save("BB", new User(5,28,"Tom"));
		dao.save("GG", new User(3,13,"Jack"));
		dao.save("DD", new User(2,25,"Lico"));
		dao.save("EE", new User(6,23,"Thomas"));

//		System.out.println("FF = "+dao.get("FF"));
//		System.out.println("BB = "+dao.get("BB"));
//		System.out.println("EE="+dao.get("EE"));

		System.out.println("遍历User集合");
		Set<Map.Entry<String, User>> entry = dao.getMap().entrySet();
		for(Map.Entry<String, User> en:entry){
			System.out.println(en);
		}
		
		System.out.println("更新GG");
		dao.update("GG", new User(3,45,"Lico"));
	//	System.out.println("GG="+dao.get("GG"));
		for(Map.Entry<String, User> en:entry){
			System.out.println(en);
		}
		
		//删除FF
		System.out.println("删除FF");
		dao.delete("FF");
		for(Map.Entry<String, User> en:entry){
			System.out.println(en);
		}
		
		//使用List方法遍历所有User信息
		System.out.println("使用dao.list()方法遍历User信息");
		for(User user: dao.list1()){
			System.out.println(user);
		}
		
		System.out.println("使用dao.getKey()方法遍历Key信息");
		for(String str: dao.getKey()){
			System.out.println(str);
			System.out.println(str+"===="+dao.getMap().get(str));
		}
		
		/*
		//Set
		for(User list : dao.list()){
			System.out.println(list);
		}
		System.out.println("删除User集合CC");
		dao.delete("CC");
		for(User list : dao.list()){
			System.out.println(list);
		}
		*/
	}
}


SpyGlass CDC实战:如何用sgdc约束文件解决跨时钟域报错(附常见错误排查) 本文详细介绍了如何使用SpyGlass CDC工具编写sgdc约束文件解决跨时钟域(CDC)报错问题。从基础语法到实战案例,涵盖时钟声明、复位约束、路径豁免等关键技巧,特别针对SPI断续时钟等特殊场景提供解决方案,并附常见错误排查指南,帮助工程师高效完成CDC验证。 阅读详情

相关推荐

Graybox Overview

Graybox功能使能够在sub_module上执行扫描和ATPG操作,然后能够在更高层次的层次上执行扫描和ATPG操作时使用该子模块的简化的Graybox表示,从而简化了分层设计中的扫描插入和ATPG操作过程。由于子模块的graybox表示只包含极少量的互连电路(子模块与top的互连),在大型分层设计中使用graybox可以极大地减少执行扫描插入,优化计时,分析故障和创建测试pattern所需的memory和工具runtime。

weixin_44954910的博客 1079

java 关于泛型知识点的两题

第一题:开发一个泛型Apple类,要求有一个重量属性weight在测试类中实例化不同的泛型对象,要求对象a1的这一属性是String类型,对象a2的这一属性是Integer型,a3的这一属性是Double型。分别为a1,a2,a3的重量属性赋值为:”500克”,500,500.0,在测试类中通过对象调用访问器得到属性值并输出。 public class Apple<T> { private T weight; public T getWeight() { ret

weixin_44193337的博客 1035

Mac开发环境一键配置指南|从零到生产力

类别工具包管理Homebrew终端版本管理容器编辑器效率用一键脚本的话,2小时内可以搞定全部环境。有问题评论区交流~

在代码的世界里,每天进步1% 622

Java笔记030-泛型章节练习

Java笔记029-泛型章节练习

qq_59621600的博客 231

Vitis 安装及环境配置

Vitis 官方手册 https://www.xilinx.com/html_docs/xilinx2020_1/vitis_doc/index.html Xilinx Downloads center https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/vitis.html 系统要求如下图所示,Windows系统只能支持Vitis嵌入式系统开发流程,不能支持加速设计 1.安装ubuntu18.0

怠桑的博客 7051

手把手教你用Siemens EDA破解工具搞定PADs VX2.7安装与卡死问题

本文详细介绍了如何使用Siemens EDA工具解决PADs VX2.7的安装与卡死问题。从License配置到性能调优,提供全面的解决方案,帮助工程师高效完成电子设计自动化任务。特别针对常见的卡顿现象,给出了输入法兼容性调整、图形性能优化等实用技巧。

k8l9m0n的博客 549

Java泛型专项练习

泛型数组指的是数组的类型为泛型。//声明一个泛型数组并动态初始化其大小为10。

m0_74776728的博客 558

AD9361 官方例程详解(一)

文章目录前言一、pandas是什么?二、使用步骤总结 前言 一、pandas是什么? 二、使用步骤 总结

weixin_44630490的博客 4万+

23-JavaSE基础巩固练习:泛型综合练习

JavaSE基础巩固练习:泛型综合练习

yelitoudu的博客 882

手把手教你使用ConvNeXt训练自己数据集和推理,ConvNeXt模型训练(CVPR 2022),一个能挑战 Vision Transformer 的卷积神经网络,含完整代码和数据集

手把手教你使用ConvNeXt训练自己数据集和推理,ConvNeXt模型训练(CVPR 2022),一个能挑战 Vision Transformer 的卷积神经网络,含完整代码和数据集

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1448

最新Python爬虫实战(入门爬虫篇)——案例8:图书网畅销榜数据采集(详细爬虫思路截图+抓包动图演示+完整爬虫代码+详细注释)

本次案例通过 Python 爬虫技术,成功实现了对图书网畅销榜多页数据的批量爬取与 Excel 保存。代码采用模块化设计,包含分页参数构造、API 接口请求、JSON 数据解析、Excel 数据持久化等完整流程;通过配置模拟浏览器的请求头,有效规避基础反爬策略,保证请求的稳定性。整个爬虫逻辑遵循 “分页遍历 → 接口请求 → JSON 解析 → 提取图书信息 → 保存到 Excel” 的标准流程,与电商类接口爬取范式高度一致。

努力让自己发光,对的人才能迎着光而来 29万+

Java_泛型练习题

泛型课堂练习题(韩顺平老师) 定义Employee类 (1)该类包含:private成员变量name,sal,birthday,其中birthday为MyDate类的对象; (2)为每一个属性定义getter,setter方法; (3)重写toString方法输出name,sal,birthday (4)MyDate类包含:private成员变量year,month,year;并为每一个属性定义getter,setter方法; (5)创建该类的3个对象,并把这些对象放入ArrayList集合中(

战士小小白的博客 2925

【Agent从入门到实践】40 容错优化:异常处理、重试机制、降级策略

各位小伙伴,咱们的多Agent框架一路优化到现在,决策快、执行效率高、资源用得省,看似啥都行,但只要一遇到网络波动、工具故障、数据异常调用web_search工具时网络超时,整个检索任务直接失败,写作Agent没数据可用向量库连接异常,向量检索直接崩掉,依赖检索结果的Agent全趴窝单个Agent执行出错,整个并行任务流程直接中断,前功尽弃高并发下部分工具调用失败,框架没有备用方案,只能返回任务失败说白了,咱们之前的框架只有正常执行逻辑,没有异常兜底逻辑。

人工智能AI技术 908

Java泛型详解:Java泛型集合、泛型类、泛型方法、泛型的使用

在 Java 1.5 之前没有泛型,通常需要使用强制类型转换的方式将一种数据类型转换为另一种数据类型,这种转换要求开发者对实际参数的类型具有可预知性。对于强制类型转换错误的情况,编译器可能不会提示错误,但是在运行时会出现异常,这是一个安全隐患。 为了解决这一隐患,从 Java 1.5 开始提供了泛型。泛型可以在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高了代码的重用率。本节将详...

jijiangpeng的博客 7428

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Java 泛型(Generic) 自定义泛型类和泛型接口和泛型方法的使用、泛型通配符

Java 泛型(Generic)1.为什么要有泛型(Generic)1.没有使用功能泛型时2.使用泛型时3.泛型2.泛型的使用1.泛型的声明2.泛型的实例化:3泛型的几个重要使用1. 泛型类(含集合类)需要注意的点2.在集合中使用泛型3.自定义泛型类、泛型方法4.泛型类的继承5.泛型接口4.泛型通配符 1.为什么要有泛型(Generic) 1.没有使用功能泛型时 解决元素存储的安全性问题 在集合...

码农回顾 4761

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

第13章_泛型拓展练习(集合中泛型的使用,比较器,自定义泛型类)

集合中泛型的使用1、姓名、手机号码2、学生信息录入3、List中存储偶数4、Set中存储偶数5、Set中存10个偶数6、回文单词7、随机验证码8、学生信息录入9、歌手和歌曲10、统计字母次数11、扑克牌12、去重复字符13、双色球14、省份城市15、世界杯16、菜单的二级联动效果。比较器17、Circle类18、员工类排序19、学生排序。自定义泛型类20、坐标类Coordinate\21、元素交换22、反转元素23、数组排序24、自定义ArrayList 25、自定义泛型类:Person26、自定义数

小丁的博客 1335

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Java泛型入门篇: 泛型类、泛型接口以及泛型方法

专栏文章导航 Java泛型入门篇: 泛型类、泛型接口以及泛型方法 Java泛型进阶篇: 无界通配符、上界通配符以及下界通配符 Java泛型原理篇: 类型擦除以及桥接方法 文章目录前言1. 什么是泛型2. 泛型的使用泛型类使用方法泛型类继承泛型接口使用方法泛型接口实现类泛型方法使用方法静态泛型方法所属类为泛型类/泛型接口 前言     我们在平时的开发当中基本上无时无刻都在使用泛型,尤其是涉及到集合、多态或自定义类的场景,可以说是泛型是一个十分重要的特性。但包括我在内的大多数人,对泛型的掌握不够深刻,.

笔墨的专栏 4203

Java基础进阶 自定义泛型、Map集合

自定义泛型 1.1、泛型的定义介绍 在集合中,不管是接口还是类,它们在定义的时候类或接口名的后面都使用<标识符>,当我们在使用的时候,可以指定其中的类型。如果当前的类或接口中并没有<标识符>,我们在使用的时候也不能去指定类型。 举例:比如我们之前所学习的集合ArrayList类: 1.png 说明:在ArrayList类上有一个泛型的参数:E 设计API...

weixin_46329358的博客 2811

限制泛型类型、使用类型通配符和继承泛型类(接口)

本篇介绍泛型类的更深层次的用法,限制泛型定义数据类型的范围、使用类型通配符、继承泛型类与实现泛型接口。一、限制泛型类可用类型泛型类的类型限制是指在定义泛型类时通过使用extends关键字来限制可用的类型范围。泛型可以继承。class 类名调用了extends关键字,继承某类,那么只能使用这个类及其子类充当泛型。实操展示:使用extends关键字,将TestDemo类的泛型继承自Colloection类及其子类。

weixin_74141222的博客 1384

Java 泛型详解:泛型类、泛型方法、泛型接口、类型擦除与类型通配符

本文全面解析Java泛型,这是JDK1.5引入的类型参数化机制,通过`<类型>`语法实现编译期类型安全,运行期经“类型擦除”保障性能。内容涵盖泛型类、方法、接口的定义、语法与实现方式,详解无界、上界、下界通配符的特性与用法,分析类型擦除原理及泛型关键规则(如参数化类型无继承、泛型运行时擦除等)。掌握泛型可提升代码安全、可读性与复用性,是Java开发者进阶必备技能。

Vivian_0682的博客 1546

【Flutter】Dart 泛型 ( 泛型类 | 泛型方法 | 特定类型约束的泛型 )

一、Dart 泛型类与泛型方法、 二、Dart 泛型中的特定类型约束、 三、Dart 自带泛型、 四、完整代码示例、 五、 相关资源、

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 1万+

泛型和集合的认识

单列集合就是一个集合存的都是一个,单一类型的对象,每个对象都是独立存在的,不和其他的对象存在关系双列集合恰恰相反,他一次性存入两个对象或者数据,这两个对象或者数据存在相互映射关系,比如存入,男和女,那么男就映射女,先存入的叫做键(Key)后存入和叫做值(Value);单列集合的性质、数据结构与特性单列集合是指只存储单一类型的对象,即这些集合中的元素都是独立存在的,不与其他元素形成键值对关系。Java 中的主要单列集合包括 List和 Set。List。

Darling02zjh的博客 850

泛型的概念与使用、自定义泛型类与泛型方法、通配符;

一、泛型的概念预定义和使用 1、 在几何中,我只想添加int类型的数据或只想添加字符串类型的数据等等,限制的这个东西就叫泛型 在实例化一个接口或者类的对象的时候,指明了<E>是什么,则以后的该接口或方法中只要有<E>的就全变成了填入的类型。 ①、List<Integer> list=new ArrayList<Integer&...

qq_39044046的博客 2780

【Java】集合框架和泛型(三)

(1)将对象的类型作为参数,指定到其他类或者方法上,从而保证类型转换的安全性和稳定性。这就是泛型。泛型的本质就是参数化类型。(2)泛型的定义语法格式如下:类1或者接口 对象 = new 类2();注意:-->“类2”可以是“类1”本身,可以是“类1”的子类,还可以是接口的实现类。-->“类2”的类型实参必须和“类1”中的类型实参相同。(3)例如:ArrayList list = new ArrayList();

swy2560666141的博客 872

传递集合对象_Java进阶 自定义泛型、Map集合

自定义泛型1.1、泛型的定义介绍在集合中,不管是接口还是类,它们在定义的时候类或接口名的后面都使用,当我们在使用的时候,可以指定其中的类型。如果当前的类或接口中并没有,我们在使用的时候也不能去指定类型。举例:比如我们之前所学习的集合ArrayList类:说明:在ArrayList类上有一个泛型的参数:E设计API的时候,设计者并不知道我们要用ArrayList存储哪种数据类型,所以他定义了一个泛型...

weixin_39762348的博客 493

使用泛型的Map集合案例

HashMap:Map的主要实现类以键值对,允许使用 null键null值

a805814077的博客 2571
上一篇: JAVA集合Hashtable实现类Properties简单练习
下一篇: JAVA泛型使用练习2(自定义泛型使用)
路路的小豆
博客等级 码龄10年 1763粉丝 99原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值