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. 阿里短信接口使用(JAVA版)

    近期项目需要使用短信接口,对比下选择了阿里的短信接口 以下为开发笔记: maven pom.xml中引入: <dependency> <groupId>com.aliyun&l ...

  2. centOS下SVN安装和配置

    1>SVN服务器端文件可见问题 在平时使用SVN时候,一直以为在客户提交文件,那么在服务器对应的版本库下面就会有相同文件.在自己搭建后,发现提交到服务器端文件完全看不见.... 这是由于SVN服 ...

  3. Mac OSX: 有线共享WiFi

    首先连上有线 系统偏好设置->网络->点击左侧WiFi,再点击右下角[高级] 勾选[创建电脑对电脑网络],然后单击[好] 在顶部菜单栏击WiFi图标,如果WiFi未打开,则单击打开,如果已 ...

  4. 条款37:绝不重新定义继承而来的缺省参数值(Never redefine a function's inherited default parameter value)

    NOTE: 1.绝不重新定义一个继承而来的缺省参数值,因为缺省参数值都是静态绑定的,而virtual 函数-----你唯一应该覆盖的东西----却是动态绑定的.

  5. perl学习之文件测试

    用Open() 函数打开文件 打开文件的常用方法是: open(FH, "< $filename") or die "Couldn't open $filename ...

  6. dbfread报错ValueError错误解决方法

    问题 我在用dbfread处理.dbf数据的时候出现了报错 ValueError("could not convert string to float: b'.'",) 然后查找. ...

  7. JS(原型和原型链)

    (学习自慕课网<前端JavaScript 面试技巧> JS(原型和原型链) 题目1.如何准确判断一个变量是数组类型 使用 instanceof 方法 题目2.写一个原型链继承的例子 实例: ...

  8. MySQL外键设置 级联删除

    . cascade方式在父表上update/delete记录时,同步update/delete掉子表的匹配记录 . set null方式在父表上update/delete记录时,将子表上匹配记录的列设 ...

  9. 【UOJ#51】【UR #4】元旦三侠的游戏(博弈论)

    [UOJ#51][UR #4]元旦三侠的游戏(博弈论) 题面 UOJ 题解 考虑暴力,\(sg[a][b]\)记录\(sg\)函数值,显然可以从\(sg[a+1][b]\)和\(sg[a][b+1]\ ...

  10. 基于FTP服务器搭建yum源

    本例以CentOS6.8为试验对象,来搭建基于FTP服务器的yum源. 一.配置本地yum源 1.创建挂载目录/yum mkdir /yum 2.挂载镜像 mount -o loop  CentOS- ...