java零基础入门-Map集合练习(上)

一、教学目标

  • 能够使用HashMap集合实现值为双列集合存放。
  • 能够使用HashMap集合实现值为单列集合存放。
  • 能够使用HashMap集合实现值为基本数据类型存放。
  • 能够使用HashMap集合实现值为对象存放。
  • ...

二、HashMap实现自定义元素存放

1、值存放基本数据类型

        像这中就非常简单了呀,比如存放HashMap<String,Integer>,HashMap<Integer,String>,HashMap<Integer,Double>等双基本类型存储。

演示代码如下:

    /*** 通过map.entrySet()方法遍历map*/@Testpublic void testMapByEntrySet() {//创建一个map集合容器Map<String, String> map = new HashMap<>();//添加元素map.put("黄忠", "射手");map.put("吕布", "战士");map.put("妲己", "法师");//获取所有的entry对象Set<Map.Entry<String, String>> entrySet = map.entrySet();//键值对方式遍历for (Map.Entry<String, String> entry : entrySet) {//解析entry对象String key = entry.getKey();String value = entry.getValue();System.out.println(key + "所对应的值为:" + value);}}

演示代码运行结果展示:

吕布所对应的值为:战士
妲己所对应的值为:法师
黄忠所对应的值为:射手

2、值存放对象。

        对于HashMap<String,Object>,日常开发也经常会有的。其中Object对象可以是一个pojo类,一个实体Entity类等。比如我定义一个HashMap<String,UserEntity>,对于这种数据结构的map,我们来试试遍历,看看它是如何用的。

演示代码如下:

    /*** 遍历值为对象的map集合*/@Testpublic void testMapForByObject() {//创建一个map集合容器Map<String, UserEntity> map = new HashMap<>();//添加元素map.put("1", new UserEntity(1, "赵云", 30));map.put("2", new UserEntity(2, "貂蝉", 10));map.put("3", new UserEntity(3, "李白", 20));map.put("4", new UserEntity(4, "黄忠", 60));//获取所有的entry对象Iterator<Map.Entry<String, UserEntity>> iterator = map.entrySet().iterator();//Iterator迭代器while (iterator.hasNext()) {Map.Entry<String, UserEntity> next = iterator.next();System.out.println(next.getKey() + "所对应的值为:" + next.getValue());}}

演示代码运行结果展示:

1所对应的值为:id=1 ,name=赵云 ,age=30
2所对应的值为:id=2 ,name=貂蝉 ,age=10
3所对应的值为:id=3 ,name=李白 ,age=20
4所对应的值为:id=4 ,name=黄忠 ,age=60

        其中对于UserEntity对象,为何能打印其对象具体内容,因为我这是重写了toString(),像你们如果直接创建的对象且就这样直接进行对象遍历输出,next.getValue()所获取到的值且打印的出来的就是其对象的内存地址,所以如果你想具体打印其对象的内容,你们可以在你们所定义的实体类中重写toString方法即可。比如如下我的,仅供参考:

    @Overridepublic String toString() {return "id=" + this.id + " ," + "name=" + this.name + " ," + "age=" + this.getAge();}

        打印格式这个不固定的哈,你们根据自己的喜好随意定义,不用说就必须跟我的一样,这你们可明白,我一直教学的角度都是推崇学生发挥自主的想法去做去实现,而不是死板的只会按部就班,我也是会经常看些博主大佬写的文章,学习的只是人家写的思想,而不是连演示代码都敲一直,这样学出来的东西,就不是自己的,你这就等于在抄袭!我们要学的是代码思想,好不好。 

        演示代码已写好,那我们就来执行一下看看,给大家演示一下,如果我去掉对重写toString方法 。看看实际值打印会是啥?验证一下我上述说的结论对不对。

        你们可以看到,值都是这种com.example.demo.entity.UserEntity@e0f2686,这就是打印的该对象的内存地址,至于为啥会打印内存地址,你们请看java.lang.Object类中toString的源码。我也不是凭空捏造,如下:

    public String toString() {return getClass().getName() + "@" + Integer.toHexString(hashCode());}

        所以对于一些简单的源码,我们一定要培养自己的兴趣,去挖掘,比如就这个对象打印内容为何是一串字符串,而不是具体对象里头的内容,这就是一种专研,一种挖掘。像我们做开发,一定要培养自己的兴趣去深究代码原理。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/746235.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

损失函数和反向传播

1. 损失函数的基础 import torch from torch.nn import L1Loss from torch import nninputs torch.tensor([1, 2, 3], dtypetorch.float32) targets torch.tensor([1, 2, 5], dtypetorch.float32)inputs torch.reshape(inputs, (1, 1, 1, 3)) targets torch.reshape(targe…

迄今为止易用 —— 的 “盲水印“ 实现方案

前期回顾 网站的打赏 —— 新一代的思路-CSDN博客https://blog.csdn.net/m0_57904695/article/details/136704914?spm1001.2014.3001.5501 目录 CSDN 彩色之外 &#x1f4dd; 前言&#xff1a; &#x1f6e0;️ vue3-blind-watermark &#x1f916; 安装 ♻️ 引入&am…

Jmeter入参问题小记

表单入参的时候&#xff0c;这个地方需要勾选&#xff0c;如果不☑️选的话&#xff0c;会提示errorMsg":"Required String parameter code is not present",

【面试精讲】String是如何实现的?String源码分析

【面试精讲】String是如何实现的&#xff1f;String源码分析 目录 一、String实现机制 二、String不可变性&#xff08;使用final修饰&#xff09; 三、String 和 StringBuilder、StringBuffer 的区别 四、和equals的区别 五、String创建对象与JVM辨析 六、String源码解…

Spring Web MVC入门(1)

什么是Spring Web MVC? 定义:Spring Web MVC是基于Servlet构建的原始Web框架,从一开始就包含在Spring框架中.它的正式名称"Spring Web MVC"来自其源模块的名称(Spring-webmvc),但是它通常被称为"Spring MVC". 什么是Servlet? Servlet是一种实现动态页面…

springboot+ssm基于vue.js的客户关系Crm管理系统

系统包含两种角色&#xff1a;管理员、用户&#xff0c;主要功能如下。 ide工具&#xff1a;IDEA 或者eclipse 编程语言: java 数据库: mysql5.7 框架&#xff1a;ssmspringboot都有 前端&#xff1a;vue.jsElementUI 详细技术&#xff1a;springbootSSMvueMYSQLMAVEN 数据库…

电梯机房秀

每天乘坐电梯&#xff0c;您见过电梯的机房吗&#xff1f;来&#xff0c;跟着小伍去看看吧。Lets go&#xff01; 电梯还能节能呢&#xff0c;您知道么&#xff1f;正好&#xff0c;小伍一块带您看看电梯节能装置(●◡●) 目前电梯节能装置已广泛应用于三菱、富士、日立、奥的斯…

案例分析篇12:可靠性设计考点(2024年软考高级系统架构设计师冲刺知识点总结系列文章)

专栏系列文章推荐: 2024高级系统架构设计师备考资料(高频考点&真题&经验)https://blog.csdn.net/seeker1994/category_12593400.html 【历年案例分析真题考点汇总】与【专栏文章案例分析高频考点目录】(2024年软考高级系统架构设计师冲刺知识点总结-案例分析篇-…

深入理解 CSS——CSS进阶与实践(5w字高频面试题整理)

本文总结了CSS高频面试题&#xff0c;并搭配了演示动画进行CSS样式演示。介绍了关于如何理解盒模型&#xff0c;如何实现块级元素水平居中&#xff0c;如何实现两侧固定中间自适应的三栏布局、如何实现两栏布局&#xff0c;如何进行响应式设计&#xff0c;对BFC的理解&#xff…

Github上哪些好用的安全工具1

专注于web漏洞挖掘、内网渗透、免杀和代码审计&#xff0c;感谢各位师傅的关注&#xff01;网安之路漫长&#xff0c;与君共勉&#xff01; URLFinder 一款快速提取网页信息的工具。该项目可以快速爬取网页上的 URL 地址、JS 文件里的 API 接口等信息&#xff0c;支持批量抓取…

市场复盘总结 20240314

仅用于记录当天的市场情况&#xff0c;用于统计交易策略的适用情况&#xff0c;以便程序回测 短线核心&#xff1a;不参与任何级别的调整&#xff0c;采用龙空龙模式 一支股票 10%的时候可以操作&#xff0c; 90%的时间适合空仓等待 二进三&#xff1a; 进级率中 25% 最常用的…

【CSP试题回顾】201703-2-学生排队

CSP-201703-2-学生排队 解题思路 初始化队列&#xff1a;通过输入获得学生的数量 n&#xff0c;然后创建一个队列 queue&#xff0c;初始时这个队列中的学生按照学号从小到大的顺序排列。这是通过循环赋值实现的&#xff0c;其中每个学生的学号是其在列表中的位置加1。 处理调…

男人圣经 7

男人圣经 7 高逼格长期目标的行动飞轮1. 品牌价值和声誉2. 人脉网络和关系3. 企业文化和价值观4. 专有技术和知识产权5. 管理经验和专业知识 为什么只追求高经济、高科技&#xff1f;为什么说道德仁义是表面&#xff0c;而利益才是一切背后的真相&#xff1f; 高逼格长期目标的…

SinoDB数据库资源分析

SinoDB数据库资源主要从数据库虚处理器繁忙状况、数据库虚拟内存段、锁资源使用情况、数据空间使用率、网络连接情况等5个方面来进行分析。分别如下&#xff1a; 一、数据库虚处理器 检查项目 数据库虚处理器繁忙状况 检查命令 onstat -g rea onstat -g glo 说明 1、使用ons…

中科数安|公司办公终端、电脑文件数据 \ 资料防泄密系统

#中科数安# 中科数安是一家专注于信息安全技术与产品研发的高新技术企业&#xff0c;其提供的公司办公终端、电脑文件数据及资料防泄密系统&#xff08;也称为终端数据防泄漏系统或简称DLP系统&#xff09;主要服务于企业对内部敏感信息的安全管理需求。 www.weaem.com 该系统…

01、JS实现:去除数组中重复项的算法之一

数组去除重复项的算法&#xff1a; Ⅰ、删除排序数组中的重复项(注意&#xff1a;是已经排好序的)&#xff1a;1、题目描述&#xff1a;2、解题思路&#xff1a;3、实现代码&#xff1a; Ⅳ、小结&#xff1a; Ⅰ、删除排序数组中的重复项(注意&#xff1a;是已经排好序的)&…

ConcurrentHashMap 为什么不能插入 null?

1、典型回答 简单来说&#xff0c;ConcurrentHashMap 不允许插入 null 值是JDK 源码规定的&#xff0c;如下源码所示(此源码基于JDK 1.8)&#xff1a; 从上述源码可以看出&#xff0c;在添加方法的第一句就加了判断&#xff1a;如果 key 值为 null 或者是 value 值为 null&…

齐聚“向上的力量”,维谛技术(Vertiv)2024年合作伙伴大会成功举办

3月13日&#xff0c;维谛技术&#xff08;Vertiv&#xff0c;NYSE&#xff1a;VRT&#xff09;2024年合作伙伴大会在广东佛山顺利召开&#xff0c;本次大会以“向上的力量”为主题&#xff0c;维谛技术与数百家优秀合作伙伴&#xff08;含港台&#xff09;欢聚一堂&#xff0c;…

vue/uniapp路由history模式下宝塔空间链接打开新窗口显示404解决方法

vue/uniapp路由history模式下宝塔空间链接打开新窗口显示404&#xff0c;或者域名后带路径参数刷新就报404 解决方法&#xff1a; 宝塔中站点配置修改&#xff1a;【配置文件】中添加下面代码&#xff0c;具体如图&#xff1a; location / {try_files $uri $uri/ /index.html…

Editor.md-编辑器

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…