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. 请大神看看10.10Beta1的AppleRTC怎么破?原版会导致BIOS重置!

    看起来 跟10.9一样 sudo perl -pi -e 's|\x75\x2e\x0f\xb6|\xeb\x2e\x0f\xb6|' /System/Library/Extensions/Apple ...

  2. C++ STL容器之 map

    map 是一种有序无重复的关联容器. 关联容器与顺序容器不同,他们的元素是按照关键字来保存和访问的,而顺序元素是按照它们在容器中的位置保存和访问的. map保存的是一种 key - value 的pa ...

  3. CentOS7写汇编并编译运行汇编代码

    1.下载nasm编译器 下载地址是https://www.nasm.us/pub/nasm/releasebuilds/ wget https://www.nasm.us/pub/nasm/relea ...

  4. Django2.x中url路由的path()与re_path()参数解释

    在新版本Django2.x中,url的路由表示用path和re_path代替,模块的导入由django1.x版本的from django.conf.urls import url,include变成现 ...

  5. Windows 10 Mac 为Vs Code配置C/C++环境

    2019-06-10 更新: 加上Mac版本的Vscode配置文件 0.前言 实现效果:右键一键编译运行C/C++文件 Vs code的代码效果很好看,也很轻量,所以想为Vs Code配置C/C++环 ...

  6. 重置windows用户漫游配置文件

    1.备份用户数据 2.删除或修改漫游配置文件 3.用户PC管理员登陆,删除本地用户缓存文件 注册表打开: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows N ...

  7. 继上次编译openwrt之后,添加web界面

    上编博客写了关于openwrt编译环境和编译一个默认配置的openwrt系统. 现在我正在做如何添加web界面.(hiwooya自带的luci web) 方法如下: 首先在编译环境中配置 make m ...

  8. NGINX宏观手记

    一.这里的优化主要是指对nginx的配置优化,一般来说nginx配置文件中对优化比较有作用的主要有以下几项: nginx进程数,建议按照cpu数目来指定,一般跟cpu核数相同或为它的倍数. ``` w ...

  9. Spark——为数据分析处理提供更为灵活的赋能

    本文来自网易云社区 作者:王佳楠 一.概述 现如今在大规模数据处理分析的技术领域中,Hadoop及其生态内的各功能组件占据了绝对的统治地位.Hadoop原生的MapReduce计算框架由于任务抽象简单 ...

  10. Python第三方库之openpyxl(9)

    Python第三方库之openpyxl(9) 油炸圈饼图 甜甜圈图表与饼图相似,只是他们用的是环而不是圆.他们还可以将几个系列的数据绘制成同心环 from openpyxl import Workbo ...