Map扩展知识

map集合被使用是具备映射关系

“bigclass”: “001”, ”zhangsan”

“002”, ”lisi”

“smallclass” : ”001”, “wangwu”

:”002”, “zhaoliu”

一个学校有多个班级,每个班级都有自己的名字

代码示例:

package CollectionTest;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map; public class HashMapDemo4 { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub //解决映射中的一对多问题。
Map<String,String> one = new HashMap<String,String>();
one.put("001", "zhangsan");
one.put("002", "lisi"); Map<String,String> two = new HashMap<String,String>();
two.put("001", "wangwu");
two.put("002", "zhaoliu"); HashMap<String,HashMap<String,String>> school = new HashMap<String,HashMap<String,String>>();
school.put("bigclass", (HashMap<String, String>) one);
school.put("smallclass", (HashMap<String, String>) two); //遍历school,获取所有班级(通过KeySet方法获得是所有键的String类型)
Iterator<String> it= school.keySet().iterator();
while(it.hasNext()){
String roomName = it.next();
System.out.println(roomName);
//通过school的get方法,里面传入的是键,获得one,two
Map<String,String> room = school.get(roomName);
getInfo(room); } }
public static void getInfo(Map<String,String> roomMap){
Iterator<String> it = roomMap.keySet().iterator();
while(it.hasNext()){
String id = it.next();
String name = roomMap.get(id);
System.out.println(id+":"+name);
} } }

第二种方法:

package CollectionTest;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
class Student3{
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
private String name;
Student3(String id,String name){
this.id=id;
this.name=name;
}
public String toString(){
return id+","+name;
}
} public class HashMapDemo4 { /**
* @param args
*/
public static void demo(){
HashMap<String,List<Student3>> school = new HashMap<String,List<Student3>>(); List<Student3> big = new ArrayList<Student3>();
List<Student3> small= new ArrayList<Student3>();
school.put("big", big);
school.put("small", small);
big.add(new Student3("001","zhangsan"));
big.add(new Student3("002","lisi"));
small.add(new Student3("001","wangwu"));
small.add(new Student3("002","zhaoliu"));
Iterator<String> it = school.keySet().iterator();
while(it.hasNext()){
String roomName = it.next();
List<Student3> stu = school.get(roomName);
System.out.println(roomName);
getInfors(stu); } }
public static void getInfors(List<Student3> list){
Iterator<Student3> it2 = list.iterator();
while(it2.hasNext()){
Student3 s = it2.next();
System.out.println(s);
}
} public static void main(String[] args) {
// TODO Auto-generated method stub
demo();
}
}

集合框架(04)HashMap扩展知识的更多相关文章

  1. Java集合框架:HashMap

    转载: Java集合框架:HashMap Java集合框架概述   Java集合框架无论是在工作.学习.面试中都会经常涉及到,相信各位也并不陌生,其强大也不用多说,博主最近翻阅java集合框架的源码以 ...

  2. Java集合框架之HashMap浅析

    Java集合框架之HashMap浅析 一.HashMap综述: 1.1.HashMap概述 位于java.util包下的HashMap是Java集合框架的重要成员,它在jdk1.8中定义如下: pub ...

  3. Java 集合框架 04

    集合框架·Map 和 Collections集合工具类 Map集合的概述和特点 * A:Map接口概述 * 查看API可知: * 将键映射到值的对象 * 一个映射不能包含重复的键 * 每个键最多只能映 ...

  4. (转)Java集合框架:HashMap

    来源:朱小厮 链接:http://blog.csdn.net/u013256816/article/details/50912762 Java集合框架概述 Java集合框架无论是在工作.学习.面试中都 ...

  5. 阶段01Java基础day18集合框架04

    18.01_集合框架(Map集合概述和特点) A:Map接口概述 查看API可以知道: 将键映射到值的对象 一个映射不能包含重复的键 每个键最多只能映射到一个值 B:Map接口和Collection接 ...

  6. Java 集合框架:HashMap

    原文出处:Java8 系列之重新认识 HashMap 摘要 HashMap 是 Java 程序员使用频率最高的用于映射 (键值对) 处理的数据类型.随着 JDK(Java Developmet Kit ...

  7. java集合框架04——LinkedList和源码分析

    上一章学习了ArrayList,并分析了其源码,这一章我们将对LinkedList的具体实现进行详细的学习.依然遵循上一章的步骤,先对LinkedList有个整体的认识,然后学习它的源码,深入剖析Li ...

  8. Java集合框架(四)-HashMap

    1.HashMap特点 存放的元素都是键值对(key-value),key是唯一的,value是可以重复的 存放的元素也不保证添加的顺序,即是无序的 存放的元素的键可以为null,但是只能有一个key ...

  9. Java基础之集合框架——使用HashMap地图(TryPhoneBook1)

    控制台程序. 首先改进Peron类,使Person可以在地图中用作键,进而存储电话簿中的项.必须添加equals()方法并重写默认的hashCode()方法. import java.io.*; pu ...

随机推荐

  1. A. Vasya and Book

    题目原址 http://codeforces.com/contest/1082/problem/A 题目内容 一共n页书,现在位于第x位,想要看第y页,每次只能翻d页,注意总能翻到第1页和第n页. V ...

  2. 立体匹配之Census Transform

    1.立体匹配算法主要可分为两大类:基于局部约束和基于全局约束的立体匹配算法. (一)基于全局约束的立体匹配算法:在本质上属于优化算法,它是将立体匹配问题转化为寻找全局能量函数的最优化问题,其代表算法主 ...

  3. 错误error: Exception at 0x613baa14, code: 0xc0000005: read access violation at: 0x0, flags=0x0 (first chance)的解决办法

    一.错误原因 出现这个错误的原因多半是由于指针出现错误,即出现了空指针,也有说是变量没有初始化,笔者碰到的情况是发生了内存溢出. 二.定位方法 一般这种问题直接导致程序崩溃,直接调试,就能找到对应的问 ...

  4. Python中的多线程编程,线程安全与锁(二)

    在我的上篇博文Python中的多线程编程,线程安全与锁(一)中,我们熟悉了多线程编程与线程安全相关重要概念, Threading.Lock实现互斥锁的简单示例,两种死锁(迭代死锁和互相等待死锁)情况及 ...

  5. <转自原博客> 可爱的字符串算法们

    在非常强又非常关心学弟学妹学习的企鹅学长变态的考纲下,我们无奈中选择一起学习新姿势 first:KMP算法 这是一个小迪更过博客的算法,我就不好意思在这里献丑了,所以献上友链一份:http://rab ...

  6. CS Academy Distinct Neighbours(经典dp)

    CS Academy Distinct Neighbours(经典dp) 题意: 求相邻无相同数字的合法的排列数 题解: 题解 先将相同的数字分为一类,假设共有n组 定义\(dp[i][j]\)表示前 ...

  7. 2016华中农业大学预赛 B 数学

    Problem B: Handing Out Candies Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 272  Solved: 20[Submit ...

  8. Build RPM package from source code

    # yum install rpm-build# wget http://rsync.samba.org/ftp/rsync/rsync-3.0.9.tar.gz# vim rsync.specNam ...

  9. Mysql 索引原理(转自:张洋)

    摘要 本文以MySQL数据库为 研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据 库支持多种索引类型,如 ...

  10. Windows.Forms Panel 动态加载用户控件 UserControl

    创建好一个Windows Forms程序,在创建好的程序中Form1添加一个Panel控件 如图: