package cn.zmh.zuoye;

 import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/*
* 定义
* aaa学校
* 定义两个班级
* java班 学号,姓名
* 001 张三1
* 002 张三2
* hdoop班 学号,姓名
* 001 张三3
* 002 张三4
* */
public class MapDemo1 {
public static void main(String[] args) {
Map<String,String> javas = new HashMap<>();
Map<String,String> hdoop = new HashMap<>();
// 键值不能重复
javas.put("","张三1");
javas.put("","张三2");
hdoop.put("","张三3");
hdoop.put("","张三4");
Map<String,Map<String,String>> aaa = new HashMap<>();
aaa.put("java班",javas);
aaa.put("hdoop班",hdoop);
//调用方法 传参
fun1(aaa);
}
//第一种 迭代器 Iterator entrySet();
public static void fun1(Map<String, Map<String, String>> aaa) {
Set<Map.Entry<String,Map<String,String>>> classNameSet = aaa.entrySet();
Iterator<Map.Entry<String,Map<String,String>>> it = classNameSet.iterator();
while(it.hasNext()){
Map.Entry<String, Map<String, String>> next = it.next();
String classNamekey = next.getKey();
Map<String, String> classNameValue = next.getValue();
System.out.println(classNamekey);
Set<Map.Entry<String, String>> studentSet = classNameValue.entrySet();
Iterator<Map.Entry<String,String>> studendIt = studentSet.iterator();
while (studendIt.hasNext()){
Map.Entry<String, String> next1 = studendIt.next();
String studentkey = next1.getKey();
String studendValue = next1.getValue();
System.out.println("\t"+studentkey+":"+studendValue);
}
}
}
//第二种 增强for循环 entrySet();
public static void fun2(Map<String, Map<String, String>> aaa) {
Set<Map.Entry<String, Map<String, String>>> classNameSet = aaa.entrySet();
for(Map.Entry<String,Map<String,String>> i:classNameSet){
String classNamekey = i.getKey();
Map<String, String> classNameValue = i.getValue();
System.out.println(classNamekey);
Set<Map.Entry<String, String>> studentSet = classNameValue.entrySet();
for(Map.Entry<String, String> i1:studentSet){
String studentkey = i1.getKey();
String studentValue = i1.getValue();
System.out.println("\t"+studentkey+":"+studentValue);
}
}
}
//第三种 迭代器 Iterator 方法keySet();
public static void fun3(Map<String, Map<String, String>> aaa) {
Set<String> classNameSet = aaa.keySet();
Iterator<String> it = classNameSet.iterator();
while (it.hasNext()){
String classNameKey = it.next();
Map<String, String> classNameValue = aaa.get(classNameKey);
System.out.println(classNameKey);
//System.out.println(classNameValue);
Set<String> studentSet = classNameValue.keySet();
Iterator<String> it1 = studentSet.iterator();
while (it1.hasNext()){
String studentKey = it1.next();
//System.out.println(studentKey);
String studentValue = classNameValue.get(studentKey);
System.out.println(studentKey+":"+studentValue);
}
}
}
}

打印结果

Map类的三种实现 <个人练习>的更多相关文章

  1. [转]Javascript定义类的三种方法

    作者: 阮一峰 原文地址:http://www.ruanyifeng.com/blog/2012/07/three_ways_to_define_a_javascript_class.html 将近2 ...

  2. map遍历的三种基础用法

    java中遍历MAP的几种方法 Java代码 Map<String,String> map=new HashMap<String,String>();    map.put(& ...

  3. File类的三种构造方法

    package cn.zmh.File; import java.io.File; /* * * File类的构造方法 三种重载形式 * * */ public class FileDemo1 { p ...

  4. Java测试开发--Set、Map、List三种集合(四)

    1.集合类型主要有3种:set(集).list(列表)和map(映射). 2.三者关系 3.Set set接口是Collection接口的一个子接口,是无序的,set去重,也就是说set中不存在两个这 ...

  5. 用C++的类做三种优先队列的实现

    学过数据结构的都知道优先队列这种东西,普通的队列是依据入队顺序,先入队的先出队,而优先队列则是依照键值,键值越大(或越小),就越先出队. 所以,优先队列基本支持push,pop,empty,size, ...

  6. OGNL遍历list、map的常用三种方法

    package com.mylife.po; public class User { private String uname; private String pwd; public String g ...

  7. JavaScript创建类的三种方式

    //第一种 创建类方法. // 用方法模拟 构造函数. function classobj() { this.name = 'xiaoming'; } classobj.text = 'text'; ...

  8. python利用(threading,ThreadPoolExecutor.map,ThreadPoolExecutor.submit) 三种多线程方式处理 list数据

    需求:在从银行数据库中取出 几十万数据时,需要对 每行数据进行相关操作,通过pandas的dataframe发现数据处理过慢,于是 对数据进行 分段后 通过 线程进行处理: 如下给出 测试版代码,通过 ...

  9. Struts2中Action类的三种写法

      一.普通的POJO类(没有继承没有实现)-基本不使用 POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创 ...

随机推荐

  1. 什么是无符号段整数,什么又是有符号数,(c++与java语言里边的不同)

    c++中:整型数分为有符号数和无符号数两种 unsigned int a;无符号整型变量a,意思是这个数最小值为0,最大值为2的32次方-1,因为一个整型数占四个字节,一个字节8位,共32位 int ...

  2. sscanf的使用

    sscanf的使用 语法 int ssanf(const char *buffer, const char *format,[argument]...); 参数 buffer 存储的数据 format ...

  3. webpack hmr

    参考: https://webpack.js.org/concepts/hot-module-replacement/ https://webpack.js.org/guides/hot-module ...

  4. 【mysql】配置 选项文件

    在Windows中,MySQL程序从以下文件读取启动选项: 文件名 目的 WINDIR\my.ini 全局选项 C:\my.cnf 全局选项 INSTALLDIR\my.ini 全局选项 defaul ...

  5. c++ heap学习

    heap并不属于STL容器组件,它分为 max heap 和min heap,在缺省情况下,max-heap是优先队列(priority queue)的底层实现机制. 而这个实现机制中的max-hea ...

  6. PAT Basic 1024

    1024 科学计数法 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+,即数字的整数部分只有1 ...

  7. Python flask+css+js+ajax 综合复习

    flask 基本语法结构 注:这里练习的时候把装饰器的@给忘记了,导致访问404 下面练习一下在前段向后端传递参数 get请求需要用   request.args.get('变量') 去接收, get ...

  8. Android ScrollView嵌套GridView导致GridView只显示一行item

    Android ScrollView嵌套GridView导致GridView只显示一行item Android ScrollView在嵌套GridView时候,会导致一个问题发生:GridView只显 ...

  9. 优化代码,引发了早期缺陷导致新bug

    早期系统有个缺陷,调用js时少提交一个参数,导致该参数一直是undefined,但是不会引起bug. 对系统进行优化后,这个参数变成了必要的,然后代码一直会走else,undefined值明显不是一个 ...

  10. 九度oj 题目1450:产生冠军

    题目描述: 有一群人,打乒乓球比赛,两两捉对撕杀,每两个人之间最多打一场比赛. 球赛的规则如下: 如果A打败了B,B又打败了C,而A与C之间没有进行过比赛,那么就认定,A一定能打败C. 如果A打败了B ...