Map类的三种实现 <个人练习>
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类的三种实现 <个人练习>的更多相关文章
- [转]Javascript定义类的三种方法
作者: 阮一峰 原文地址:http://www.ruanyifeng.com/blog/2012/07/three_ways_to_define_a_javascript_class.html 将近2 ...
- map遍历的三种基础用法
java中遍历MAP的几种方法 Java代码 Map<String,String> map=new HashMap<String,String>(); map.put(& ...
- File类的三种构造方法
package cn.zmh.File; import java.io.File; /* * * File类的构造方法 三种重载形式 * * */ public class FileDemo1 { p ...
- Java测试开发--Set、Map、List三种集合(四)
1.集合类型主要有3种:set(集).list(列表)和map(映射). 2.三者关系 3.Set set接口是Collection接口的一个子接口,是无序的,set去重,也就是说set中不存在两个这 ...
- 用C++的类做三种优先队列的实现
学过数据结构的都知道优先队列这种东西,普通的队列是依据入队顺序,先入队的先出队,而优先队列则是依照键值,键值越大(或越小),就越先出队. 所以,优先队列基本支持push,pop,empty,size, ...
- OGNL遍历list、map的常用三种方法
package com.mylife.po; public class User { private String uname; private String pwd; public String g ...
- JavaScript创建类的三种方式
//第一种 创建类方法. // 用方法模拟 构造函数. function classobj() { this.name = 'xiaoming'; } classobj.text = 'text'; ...
- python利用(threading,ThreadPoolExecutor.map,ThreadPoolExecutor.submit) 三种多线程方式处理 list数据
需求:在从银行数据库中取出 几十万数据时,需要对 每行数据进行相关操作,通过pandas的dataframe发现数据处理过慢,于是 对数据进行 分段后 通过 线程进行处理: 如下给出 测试版代码,通过 ...
- Struts2中Action类的三种写法
一.普通的POJO类(没有继承没有实现)-基本不使用 POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创 ...
随机推荐
- iOS开源库
项目告一段落,总结一下最近学习到的优秀的三方库,希望能帮到别人. (一)网络中常用的 1.网络库:AFNetworking 2.图片缓存:SDWebImage 3.网络监测 Reachability ...
- Hdu 3177 (贪心)
题目大意: 山洞的体积为\(v\) 第\(i\)个物品放在山洞里会占据\(a_i\)的空间,在搬运过程中至少需要\(b_i\)的空间 问能不能把所有物品都放下 贪心题.比较难看出贪心,但是从无顺序要求 ...
- PAT 乙级 1010
题目 题目地址:PAT 乙级 1010 思路 首先一个问题就是审题不清,导致代码返工了很多次,最后还没写对: 其次对于这道题来说每次输入一组数据之后就可以输出结果,太过机械地想要套用题目给出的输出样例 ...
- linux各种终端类型的区别和概念
1 pty(虚拟终端或伪终端): 当我们远程telnet到主机或使用xterm时不也需要一个终端交互么?是的,这就是虚拟终端pty(pseudo-tty). 2 tty(终端设备的统称):tty一词源 ...
- log4j日志输出到文件的配置
1.Maven的dependency 2.log4j.properties的配置 3.Junit的Test类 4.web.xml的配置(非必要) 5.spring的db.config的配置(非必要) ...
- laravel 设计思想简单了解
服务容器 laravel框架中 服务容器是整个系统功能调度配置的核心,在系统运行过程中动态的为系统提供需要的服务 从而实现了解耦 控制反转(IOC) 控制反转是一种设计模式 主要解决了系统组件之间的相 ...
- Python9-模块2-包的进阶-day21
包是一种通过使用‘.模块名’来组织python模块名称空间的方式. 1. 无论是import形式还是from...import形式,凡是在导入语句中(而不是在使用时)遇到带点的,都要第一时间提高警觉: ...
- Python9-day4 作业
#!/usr/bin/env python# -*- coding:utf-8 -*-# Author:Timli = ["alex", "eric", &qu ...
- LeetCode(2)Add Two Numbers
题目: You are given two linked lists representing two non-negative numbers. The digits are stored in r ...
- 【js】--常用DOM库工具
/* 2014年3月16号 常用DOM工具库*/var DOM={}; DOM.getElesByClass=function (strClassName,context){ if(typeof st ...