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

一、教学目标

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

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

  3、值存放双列集合

        对于值又存放map?map嵌套呀这是,像这种需求,在日常实战中也不是不会遇到,比如定义一个HashMap<String,Map<String,String>>,如果日常中遇到这种类型的map,你们会不会感到空幻,这也太可怕了吧。

演示代码如下:

    /*** 遍历值为map的map集合*/@Testpublic void testMapForByMap() {//创建一个map集合容器Map<String, Map<String, String>> mapBig = new HashMap<>();//分别创建值mapMap<String, String> mapKey1 = new HashMap<String, String>();mapKey1.put("1", "黄忠");mapKey1.put("2", "狄仁杰");mapKey1.put("3", "虞姬");Map<String, String> mapKey2 = new HashMap<String, String>();mapKey2.put("1", "妲己");mapKey2.put("2", "貂蝉");mapKey2.put("3", "甄姬");Map<String, String> mapKey3 = new HashMap<String, String>();mapKey3.put("1", "吕布");mapKey3.put("2", "孙策");mapKey3.put("3", "钟无艳");//添加到集合中mapBig.put("射手", mapKey1);mapBig.put("法师", mapKey2);mapBig.put("战士", mapKey3);//遍历Set<Map.Entry<String, Map<String, String>>> entrySet1 = mapBig.entrySet();for (Map.Entry<String, Map<String, String>> entry1 : entrySet1) {//解析entry对象String key1 = entry1.getKey();Map<String, String> value1 = entry1.getValue();System.out.println("key为【"+key1+"】所对应的值如下:");//继续解析嵌套mapSet<Map.Entry<String, String>> entrySet2 = value1.entrySet();for (Map.Entry<String, String> entry2 : entrySet2) {//解析entry对象String key2 = entry2.getKey();String value2 = entry2.getValue();System.out.print(key2 + ":" + value2 + "|");}//换行System.out.println();}}

演示代码运行结果展示:

key为【射手】所对应的值如下:
1:黄忠|2:狄仁杰|3:虞姬|
key为【法师】所对应的值如下:
1:妲己|2:貂蝉|3:甄姬|
key为【战士】所对应的值如下:
1:吕布|2:孙策|3:钟无艳|

        看这,演示代码是不是特比的有意思,其实呢,你可以无限嵌套下去,唯有一点,别把自己绕晕了就行哈,因为我在给大家设置演示实例的同时就考虑到了该问题,当你map嵌套map一层又一层,层数大了,你自己都不知道要嵌套那一层,所以我在演示的时候,我是尽量通过取名123这种阿拉伯数字来取分,还有就是对于每一层map你都要做一次循环。

4、值存放单列集合

        像这种map值是嵌套单列集合,还是相对比较简单,对比嵌套map而言,在实际开发中也是会经常遇到的,但是对于这种map嵌套单列集合的数据结构,相对而言遍历map是简单些,遍历层数相对值为map嵌套也简单些,像HashMap<String,List<String>>,它只需要遍历一层即可打印出对应键所对应的list值。

演示代码如下:

    /*** 遍历值为map的list集合*/@Testpublic void testMapForByArrayList() {//创建一个map集合容器Map<String, List<String>> map = new HashMap<>();//定义集合集合。List<String> arrayList1 = new ArrayList<>();arrayList1.add("黄忠");List<String> arrayList2 = new ArrayList<>();arrayList2.add("吕布");arrayList2.add("钟无艳");//添加到集合中map.put("射手", arrayList1);map.put("法师", arrayList2);//遍历mapSet<Map.Entry<String, List<String>>> entrySet = map.entrySet();for (Map.Entry<String, List<String>> entry : entrySet) {//解析entry对象String key = entry.getKey();List<String> value = entry.getValue();System.out.println("key为【" + key + "】所对应的值如为:" + value);}}

演示代码运行结果展示:

key为【射手】所对应的值如为:[黄忠]
key为【法师】所对应的值如为:[吕布, 钟无艳]

完整截图可见如下:

         以上就是对map的一些玩法,你们也可以开大自己的脑洞, 比如像这样,Map<String, List<Map<String,List<String>>>>,再比如这样:Map<String, Map<String,Map<String,List<UserEntity>>>>等,你们可以尽情的无限玩下去,只有你想不到的就没有做不到的,可以吧?空闲时间,大家可以对于我上述提出的这两数据类型的map进行实现一下啊。

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

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

相关文章

对矩阵进行奇异值分解 numpy.linalg.svd()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 对矩阵进行奇异值分解 numpy.linalg.svd() [太阳]选择题 请问根据以下程序说法正确的是&#xff1a; import numpy as np A np.array([[1, 2], [3, 4], [5, 6]]) print("【显示】A:\n&q…

Tcl语言:基础入门(三)

相关阅读 Tcl语言https://blog.csdn.net/weixin_45791458/category_12488978.html?spm1001.2014.3001.5482 Tcl中的大括号 大括号{}可以使得被其包围的所有内容被解释为字面量&#xff0c;所以不会进行命令替换&#xff0c;转义符替换&#xff08;大部分情况的转义&#xff0…

爬虫学习 Scrapy中间件代理UA随机selenium使用

目录 中间件UA、代理处理---process_requestUA随机 代理处理seleniumscrapy 中间件 控制台操作 (百度只起个名 scrapy startproject mid scrapy genspider baidu baidu.com setting.py内 ROBOTSTXT_OBEY FalseLOG_LEVEL "WARNING"运行 scrapy crawl baidu middle…

openssl3.2 - exp - export ecc pubkey from ecc priv key

文章目录 openssl3.2 - exp - export ecc pubkey from ecc priv key概述笔记END openssl3.2 - exp - export ecc pubkey from ecc priv key 概述 前面实验已经生成了ECC私钥, 现在做从ECC私钥(内容为公私钥对, 里面既有私钥信息, 也有公钥信息)导出ECC公钥. 实验对应的命令行…

<支持向量机算法(SVM:Support Vector Machine)>——《机器学习算法初识》

目录 一、⽀持向量机(SVM)算法 1 SVM算法导⼊ 2 SVM算法定义 2.1 定义 2.2 超平⾯最⼤间隔介绍 2.3 硬间隔和软间隔 2.3.1 硬间隔分类 2.3.2 软间隔分类 3 ⼩结 二、 SVM算法api初步使⽤ 三、 SVM算法原理 1 定义输⼊数据 2 线性可分⽀持向量机 3 SVM的计算过程与算…

爬虫与DataFrame对象小小结合

import pandas as pd import requests from lxml import etree #数据请求 url"https://www.maigoo.com/brand/list_1715.html" headers{User-Agent:} #数据响应 resrequests.get(url,headersheaders) tree etree.HTML(res.text) #数据解析 titletree.xpath(.//div[c…

【Vue】Request模块 - axios 封装Vuex的持久化存储

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;Vue ⛺️稳中求进&#xff0c;晒太阳 Request模块 - axios 封装 使用axios来请求后端接口&#xff0c;一般会对axios进行一些配置&#xff08;比如配置基础地址&#xff0c;请求响应拦截器…

六 超级数据查看器 讲解稿 详情1 概述

六 超级数据查看器 讲解稿 详情1 概述 点此此处 以新界面 打开B站 当前视频教程 APP下载地址 百度 下载地址 ​ 讲解稿全文&#xff1a; 大家好&#xff0c;今天我们讲解一下超级数据查看器详情界面。由于内容较多&#xff0c;讲解要分为7集&#xff0c;这是第一集 首…

Pulsar消息路由深入剖析

一、概述 大数据背景下&#xff0c;分区应该是所有组件必备的基本条件&#xff0c;否则面对海量数据时无论是计算还是存储都容易遇到瓶颈。跟其他消息系统一样&#xff0c;Pulsar通过Topic将消息数据进行业务层面划分管理&#xff0c;同时也支持Topic分区&#xff0c;通过将多…

何为一致性哈希?一致性哈希和哈希有什么区别?一文深入理解一致性哈希

目录 一、前言二、哈希2.1、哈希碰撞2.2、针对哈希碰撞的两种方案2.3、为什么用哈希2.4、普通哈希的缺点 三、一致性哈希3.1、实现方式 - 哈希环3.2、场景复现3.3、优化版本的哈希环 四、总结 一、前言 在学到分布式负载均衡时&#xff0c;负载均衡的方式有很多种&#xff0c;…

*地宫取宝c++

题目 输入样例1&#xff1a; 2 2 2 1 2 2 1输出样例1&#xff1a; 2输入样例2&#xff1a; 2 3 2 1 2 3 2 1 5输出样例2&#xff1a; 14 思路 题目说从入口开始&#xff0c;只能向右或向下行走到达右下角&#xff0c;类似“摘花生”这道题的模型。题目又说只有当格子里的宝…

数据结构知识点总结00-知识点目录

专栏主页&#xff1a; 数据结构算法程序设计基础C语言知识点总结https://blog.csdn.net/seeker1994/category_12585732.html C语言知识点总结00-C语言知识点目录 最优算法100例00-最优算法100例目录 ...... 数据结构知识点目录 要求&#xff1a; &#xff08;1&#xff…