博客名称
Java-(中级)

文章目录

  • HashMap练习1
  • Map集合练习2统计字符串字母数量
  • HashMap嵌套HashMap练习3
  • HashMap嵌套ArrayList练习4
  • ArrayList嵌套HashMap练习4

在做TreeMap练习的时候想要实现排序,键值一定要实现Comparable或者Comparator就的方法才能实现排序,切记切记。。

HashMap练习1

需求:将下面数据用集合存储,并遍历
为了更符合要求:
这次的数据就看成是学生对象。

bj北京jc   JavSE林青霞        27风清扬       30jy     JavaEE 赵雅芝     28糖糖        29
sh上海jc  JavSE郭美美        20犀利哥       22jy    JavaEE      罗玉凤     21马征        23
gz广州jc  JavaSE王力宏       30李静磊       32jy    JavaEE郎朗        31柳岩        33
xa西安jc  JavaSE范冰冰       27刘意        30jy    JavaEE李冰冰       28张志豪       29

代码演示

public class HashMapDemo06 {public static void main(String[] args) {//创建大集合HashMap<String, HashMap<String, ArrayList<Student>>> bighm = new HashMap<>();//创建中集合1HashMap<String, ArrayList<Student>> midhm1 = new HashMap<>();//创建小集合1ArrayList<Student> minal1 = new ArrayList<>();ArrayList<Student> minal2 = new ArrayList<>();//创建学生对象Student s1 = new Student("林青霞", 27);Student s2 = new Student("风清扬", 30);Student s3 = new Student(" 赵雅芝", 28);Student s4 = new Student(" 糖糖", 29);//将学生对象添加到小集合minal1.add(s1);minal1.add(s2);minal2.add(s3);minal2.add(s4);//将小集合添加到中小集合midhm1.put("JavSE", minal1);midhm1.put("JavaEE", minal2);//将中集合添加到大集合bighm.put("北京", midhm1);//创建中集合2HashMap<String, ArrayList<Student>> midhm2 = new HashMap<>();//创建小集合2ArrayList<Student> minal3 = new ArrayList<>();ArrayList<Student> minal4 = new ArrayList<>();//创建学生对象Student s5 = new Student("郭美美", 20);Student s6 = new Student("犀利哥", 22);Student s7 = new Student("罗玉凤", 21);Student s8 = new Student("马征", 23);//将学生对象添加到小集合minal3.add(s5);minal3.add(s6);minal4.add(s7);minal4.add(s8);//将小集合添加到中小集合midhm2.put("JavaSE", minal3);midhm2.put("JavaEE", minal4);//将中集合添加到大集合bighm.put("上海", midhm2);//创建中集合3HashMap<String, ArrayList<Student>> midhm3 = new HashMap<>();//创建小集合3ArrayList<Student> minal5 = new ArrayList<>();ArrayList<Student> minal6 = new ArrayList<>();//创建学生对象Student s9 = new Student("王力宏", 30);Student s10 = new Student("李静磊", 32);Student s11 = new Student("郎朗", 31);Student s12 = new Student("柳岩", 33);//将学生对象添加到小集合minal5.add(s9);minal5.add(s10);minal6.add(s11);minal6.add(s12);//将小集合添加到中集合midhm3.put("JavaSE", minal5);midhm3.put("JavaEE", minal6);//将中集合添加到大集合bighm.put("广州", midhm3);//创建中集合4HashMap<String, ArrayList<Student>> midhm4 = new HashMap<>();//创建小集合4ArrayList<Student> minal7 = new ArrayList<>();ArrayList<Student> minal8 = new ArrayList<>();//创建学生对象Student s13 = new Student("范冰冰", 27);Student s14 = new Student("杨颖", 30);Student s15 = new Student("李冰冰", 28);Student s16 = new Student("卢本伟", 29);//将学生对象添加到小集合minal7.add(s13);minal7.add(s14);minal8.add(s15);minal8.add(s16);//将小集合添加到中集合midhm4.put("JavaSE",minal7);midhm4.put("JavaEE",minal8);//将中集合添加到大集合bighm.put("西安", midhm4);//方式1:获取键集合遍历for(String key:bighm.keySet()){System.out.println(key);HashMap<String, ArrayList<Student>> midhm = bighm.get(key);for(String midkey:midhm.keySet()){System.out.println("\t"+midkey);ArrayList<Student> minal = midhm.get(midkey);for (Student minkey:minal){System.out.println("\t\t"+minkey.getName()+"\t"+minkey.getAge());}}}System.out.println("-----------------------------------------------");//方式2:获取键值对对象集合遍历for(Map.Entry<String, HashMap<String, ArrayList<Student>>> bigme:bighm.entrySet()){System.out.println(bigme.getKey());HashMap<String, ArrayList<Student>> minhm = bigme.getValue();for(Map.Entry<String,ArrayList<Student>> midme:minhm.entrySet()){System.out.println("\t"+midme.getKey());ArrayList<Student> minal = midme.getValue();for(Student minkey:minal){System.out.println("\t\t"+minkey.getName()+"\t"+minkey.getAge());}}}}
}

结果:

上海JavaSE郭美美  20犀利哥   22JavaEE罗玉凤 21马征    23
广州JavaSE王力宏 30李静磊   32JavaEE郎朗  31柳岩    33
西安JavaSE范冰冰 27杨颖    30JavaEE李冰冰 28卢本伟   29
北京JavSE林青霞  27风清扬   30JavaEE赵雅芝 28糖糖    29
-----------------------------------------------
上海JavaSE郭美美 20犀利哥   22JavaEE罗玉凤 21马征    23
广州JavaSE王力宏 30李静磊   32JavaEE郎朗  31柳岩    33
西安JavaSE范冰冰 27杨颖    30JavaEE李冰冰 28卢本伟   29
北京JavSE林青霞  27风清扬   30JavaEE赵雅芝 28糖糖    29

Map集合练习2统计字符串字母数量

需求1:aababcabcdabcde",获取字符串中每一个字母出现的次数要求结果:a(5)b(4)c(3)d(2)e(1)

分析:1.创建键盘录入对象,并录入数据2.创建录入的字符串数据转为字符数组3.创建集合对象,用于存储数据4.遍历字符数组5:在根据键获取键的值,获取的值可能是nullput(key,1);不是nullvalue++;put(key,value)6:创建StringBuffer对象7.遍历TreeMap集合8.将集合中元素,append到StringBuffer对象中

代码演示

public class TreeMapDemo03 {public static void main(String[] args) {//根据题目的要求我将字符串转化成键盘录入Scanner sc = new Scanner(System.in);char[] chars = sc.nextLine().toCharArray();//创建集合对象TreeMap<Character, Integer> tm = new TreeMap<>();//遍历 数组for (char chs : chars) {Integer i = tm.get(chs);if (i == null) {tm.put(chs, 1);} else {i++;tm.put(chs, i);}}StringBuffer sb = new StringBuffer();//方式1:获取键集合遍历for (Character key : tm.keySet()) {sb.append(key).append("(").append(tm.get(key)).append(")");}System.out.println("sb--"+sb);System.out.println("------------------------");StringBuffer sb2 = new StringBuffer();//方式2:获取键值对对象集合遍历for (Map.Entry<Character, Integer> me : tm.entrySet()) {sb2.append(me.getKey()).append("(").append(me.getValue()).append(")");}System.out.println("sb2--"+sb2);}
}

结果:

aababcabcdabcde
sb--a(5)b(4)c(3)d(2)e(1)
------------------------
sb2--a(5)b(4)c(3)d(2)e(1)

统计字符串字母数量图解

HashMap嵌套HashMap练习3

需求2:HashMap嵌套HashMap
Java
JavaSE
格雷福斯 20
影流之主 22
JavaEE
至高之拳 21
落入狂沙 23
先存储元素,然后遍历元素

代码演示

public class TreeMapDemo04 {public static void main(String[] args) {//创建大集合HashMap<String,HashMap<String,Integer>>  bighm = new HashMap<>();//创建小集合1HashMap<String,Integer> minhm1 = new HashMap<>();minhm1.put("格雷福斯",20);minhm1.put("影流之主",22);//将小集合添加到大集合bighm.put("JavaSE",minhm1);//创建小集合2HashMap<String,Integer> minhm2 = new HashMap<>();minhm2.put("至高之拳",21);minhm2.put("落日狂沙",23);//将小集合添加到大集合bighm.put("JavaEE",minhm2);//方式1:获取键集合遍历for (String key:bighm.keySet()){System.out.println(key);HashMap<String, Integer> minhm = bighm.get(key);for(String minkey:minhm.keySet()){System.out.println("\t"+minkey+"\t"+minhm.get(minkey));}}System.out.println("------------------------");//方式2:获取键值对对象集合遍历for(Map.Entry<String,HashMap<String,Integer>> me:bighm.entrySet()){System.out.println(me.getKey());HashMap<String, Integer> minhm = me.getValue();for(Map.Entry<String, Integer> mingme:minhm.entrySet()){System.out.println("\t"+mingme.getKey()+"\t"+mingme.getValue());}}}
}

结果:

JavaSE影流之主   22格雷福斯  20
JavaEE落日狂沙  23至高之拳  21
------------------------
JavaSE影流之主  22格雷福斯  20
JavaEE落日狂沙  23至高之拳  21

HashMap嵌套ArrayList练习4

需求:假设HashMap集合的元素是ArrayList。有3个。
每一个ArrayList集合的值是字符串。
元素我已经完成,请遍历。
结果:
三国演义
吕布
周瑜
笑傲江湖
令狐冲
林平之
神雕侠侣
郭靖
杨过

代码演示

public class TreeMapDemo05 {public static void main(String[] args) {//创建大集合HashMap<String,ArrayList<String>> bighm = new HashMap<>();//创建小集合1ArrayList<String> al1 = new ArrayList<>();al1.add("吕布");al1.add("周瑜");//将小集合添加大集合bighm.put("三国演义",al1);//创建集合2ArrayList<String> al2 = new ArrayList<>();al2.add("令狐冲");al2.add("林平之");//将小集合添加大集合bighm.put("笑傲江湖",al2);//创建集合3ArrayList<String> al3 = new ArrayList<>();al3.add("郭靖");al3.add("杨过");bighm.put("神雕侠侣",al3);//方式1:获取键集合遍历for(String key:bighm.keySet()){System.out.println(key);ArrayList<String> alValue = bighm.get(key);for(String valueKey:alValue){System.out.println("\t"+valueKey);}}System.out.println("---------------------------------------");//方式2:获取键值对对象集合遍历for(Map.Entry<String,ArrayList<String>> me:bighm.entrySet()){System.out.println(me.getKey());ArrayList<String> alList = me.getValue();for (String key:alList){System.out.println("\t"+key);}}}
}

结果:

神雕侠侣郭靖杨过
三国演义吕布周瑜
笑傲江湖令狐冲林平之
---------------------------------------
神雕侠侣郭靖杨过
三国演义吕布周瑜
笑傲江湖令狐冲林平之

ArrayList嵌套HashMap练习4

ArrayList集合嵌套HashMap集合并遍历。
需求:
假设ArrayList集合的元素是HashMap。有3个。
每一个HashMap集合的键和值都是字符串。
元素我已经完成,请遍历。
结果:
周瑜—小乔
吕布—貂蝉

  郭靖---黄蓉杨过---小龙女令狐冲---任盈盈林平之---岳灵珊

代码演示

public class HashMap06 {public static void main(String[] args) {//创建大集合ArrayList<HashMap<String,String>> bigal = new ArrayList<>();//创建小集合HashMap<String,String> hm = new HashMap<>();hm.put("周瑜","小乔");hm.put("吕布","貂蝉");//将小集合添加到大集合bigal.add(hm);//创建小集合HashMap<String,String> hm1 = new HashMap<>();hm1.put("郭靖","黄蓉");hm1.put("杨过","小龙女");//将小集合添加到大集合bigal.add(hm1);//创建小集合HashMap<String,String> hm2 = new HashMap<>();hm2.put("令狐冲","任盈盈");hm2.put("林平之","岳灵珊");//将小集合添加到大集合bigal.add(hm2);//方式1:获取键集合遍历for(HashMap<String,String> key:bigal){for (String valueKey:key.keySet()){System.out.println(valueKey+"----"+key.get(valueKey));}}System.out.println("----------------------------");//方式2:获取键值对对象集合for(HashMap<String,String> key:bigal){for(Map.Entry<String,String> me:key.entrySet()){System.out.println(me.getKey()+"----"+me.getValue());}}}
}

结果:

吕布----貂蝉
周瑜----小乔
杨过----小龙女
郭靖----黄蓉
令狐冲----任盈盈
林平之----岳灵珊
----------------------------
吕布----貂蝉
周瑜----小乔
杨过----小龙女
郭靖----黄蓉
令狐冲----任盈盈
林平之----岳灵珊

day17Java-Map练习相关推荐

  1. Map的分类和不同的应用场景

    java为数据结构中的映射定义了一个接口java.util.Map; 它有四个实现类,分别是HashMap,Hashtable,LinkedHashMap和TreeMap 可能很多人只使用过HashM ...

  2. java1.8新增超实用Map方法——Map.getOrDefault()和Map.value()方法详解

    1. Map.getOrDefault() 翻译一下官方解释: java.util.Map<K, V> V getOrDefault(Object key, V defaultValue) ...

  3. Go 学习笔记(67)— Go 并发安全字典 sync.Map

    1. 并发不安全的 map Go 语言中的 map 在并发情况下,只读是线程安全的,同时读写是线程不安全的. 换句话说,在同一时间段内,让不同 goroutine 中的代码,对同一个字典进行读写操作是 ...

  4. Python 常用内置函数map、zip、filter、reduce、enumerate

    Python 中有许多非常实用的内置函数,通过这些函数我们可以方便的实现某些功能,下面就列举一些常用的内置函数. 1. map() 函数 map() 可以根据提供的函数对指定序列做映射,它接受一个函数 ...

  5. 将request中的所有参数存放到自定义的map中

    /*** <获取参数map>* * @return 参数map* @throws Exception */protected Map<String, Object> getPa ...

  6. Map再整理,从底层源码探究HashMap

    前言 本文为对Map集合的再一次整理.内容包括:Map HashMap LinkedHashMap TreeHashMap HashTable ConcurrentHashMap Map Map< ...

  7. Java集合详解之Map

    一.首先看看集合框架体系图 从图中可以看到,Map接口扩展了Iterator接口,关于Iterator接口详解请移步:Iterator接口详解 二.Map是什么? Map<k,v>使用键值 ...

  8. 网络模型mAP计算实现代码

    网络模型mAP计算实现代码 一.mAP精度计算 这里首先介绍几个常见的模型评价术语,现在假设我们的分类目标只有两类,计为正例(positive)和负例(negtive)分别是: 1)True posi ...

  9. 2021年大数据常用语言Scala(二十二):函数式编程 映射 map

    目录 映射 | map 用法 案例一 案例二 映射  map 集合的映射操作是将来在编写Spark/Flink用得最多的操作,是我们必须要掌握的.因为进行数据计算的时候,就是一个将一种数据类型转换为另 ...

  10. 2021年大数据常用语言Scala(十八):基础语法学习 Map对象

    目录 Map对象 不可变Map 可变Map Map基本操作 Map对象 Map可以称之为映射.它是由键值对组成的集合.在scala中,Map也分为不可变Map和可变Map. 不可变Map 定义 语法 ...

最新文章

  1. 总是听别人说响应式布局,原来这么简单
  2. html公共模块提取出去,webpack 填坑之路--提取独立文件(模块)
  3. python垃圾回收机制原理_如何理解和掌握Python垃圾回收机制?
  4. Java加密与解密的艺术~DES实现
  5. MySQL 8.0 数据字典有哪些变化?
  6. 用oledb导出数据到excel
  7. 这才是智能家居真正的现状
  8. wpsoffice安卓历史版本_wps office移动版_wps office手机版下载-太平洋下载中心
  9. 数字信号处理实验(五)—— 心电信号处理 IIR FIR滤波综合题(上篇)
  10. Chrome浏览器书签同步插件floccus与坚果云的协同使用方法
  11. dz论坛非应用商店的插件如何安装教程
  12. 世界观和方法论----写给学弟学妹的
  13. 管理用计算机修理费属于什么会计科目,维修费是什么会计科目
  14. Nuxt.js 如何做SEO优化
  15. Sencha Touch(Extjs)
  16. 2021 牛津大学:Recent Advances in Reinforcement Learning in Finance
  17. 推荐一个Intellij IDEA插件--Key Promoter X
  18. tdengine和mysql区别_TDEngine Game Framework
  19. 训练集、验证集和测试集这三个名词的区别
  20. 【MySQL进阶】MySQL事务隔离与锁机制底层原理万字总结(建议收藏!!)

热门文章

  1. 2023年1月用户体验GX评测:商业银行抢抓新春营销旺季,多措并举持续提升用户体验
  2. java递归老鼠走迷宫_老鼠走迷宫----------递归问题
  3. 帆软大屏背景怎么设置_帆软报表(finereport)大屏细节操作(持续更新)
  4. 图解excel循环引用使用
  5. 2 snippets vue 修改配置_Vue - VSCode 基本配置 ESLine Prettier 代碼自動風格化
  6. 在Android Studio 创建模拟器出现VT-x is dis able in BIOS的几种解决方案
  7. 小学英语教学与计算机结合论文,浅谈在小学英语教学中与信息技术的有效融合...
  8. 电路计算机辅助设计2,上海电力学院电路计算机辅助设计2--二端口电路的设计...
  9. windows重装系统刷机教程
  10. Swagger - 魔改版本的 bootstrap swagger UI 页面 ,springboot 集成