集合框架(04)HashMap扩展知识
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扩展知识的更多相关文章
- Java集合框架:HashMap
转载: Java集合框架:HashMap Java集合框架概述 Java集合框架无论是在工作.学习.面试中都会经常涉及到,相信各位也并不陌生,其强大也不用多说,博主最近翻阅java集合框架的源码以 ...
- Java集合框架之HashMap浅析
Java集合框架之HashMap浅析 一.HashMap综述: 1.1.HashMap概述 位于java.util包下的HashMap是Java集合框架的重要成员,它在jdk1.8中定义如下: pub ...
- Java 集合框架 04
集合框架·Map 和 Collections集合工具类 Map集合的概述和特点 * A:Map接口概述 * 查看API可知: * 将键映射到值的对象 * 一个映射不能包含重复的键 * 每个键最多只能映 ...
- (转)Java集合框架:HashMap
来源:朱小厮 链接:http://blog.csdn.net/u013256816/article/details/50912762 Java集合框架概述 Java集合框架无论是在工作.学习.面试中都 ...
- 阶段01Java基础day18集合框架04
18.01_集合框架(Map集合概述和特点) A:Map接口概述 查看API可以知道: 将键映射到值的对象 一个映射不能包含重复的键 每个键最多只能映射到一个值 B:Map接口和Collection接 ...
- Java 集合框架:HashMap
原文出处:Java8 系列之重新认识 HashMap 摘要 HashMap 是 Java 程序员使用频率最高的用于映射 (键值对) 处理的数据类型.随着 JDK(Java Developmet Kit ...
- java集合框架04——LinkedList和源码分析
上一章学习了ArrayList,并分析了其源码,这一章我们将对LinkedList的具体实现进行详细的学习.依然遵循上一章的步骤,先对LinkedList有个整体的认识,然后学习它的源码,深入剖析Li ...
- Java集合框架(四)-HashMap
1.HashMap特点 存放的元素都是键值对(key-value),key是唯一的,value是可以重复的 存放的元素也不保证添加的顺序,即是无序的 存放的元素的键可以为null,但是只能有一个key ...
- Java基础之集合框架——使用HashMap地图(TryPhoneBook1)
控制台程序. 首先改进Peron类,使Person可以在地图中用作键,进而存储电话簿中的项.必须添加equals()方法并重写默认的hashCode()方法. import java.io.*; pu ...
随机推荐
- 1155 Heap Paths (30 分)(堆+dfs遍历)
比较简单的一题 遍历左右的时候注意一下 #include<bits/stdc++.h> using namespace std; ; ]; ; vector<int>t; ve ...
- 条件随机场(Conditional random field)
条件随机场真是把我给折磨坏了啊,本以为一本小小的<统计学习方法>攻坚剩下最后一章,心情还是十分愉悦的,打算一口气把它看完,结果真正啃起来真是无比的艰难啊,每一句对我都好像是天书一般,怎么这 ...
- django的F和Q对象
F表达式和Q表达式: # 示例模型如下 class Book(models.Model): """图书模型""" name = models ...
- CentOS程序 开机启动设置与chkconfig命令学习
CentOS设置程序开机启动的方法: 1.启动命令添加到/etc/rc.d/rc.local 文件中, 如: vim /etc/rc.d/rc.local #!/bin/sh # # This scr ...
- nginx禁止访问目录中可执行文件
某些网站系统需要用户上传图片等文件到某些目录下,难免程序有些漏洞,导致用户上传了php.cgi等等可执行的文件,导致网站陷入非常为难的境地. 此时我们可以通过nginx来禁止用户访问这些目录下的可执行 ...
- asp.net 存储过程 输出参数 取不到值
这是MSDN上的明确解释:当您将 Command 对象用于存储过程时,可以将 Command 对象的 CommandType 属性设置为 StoredProcedure.当 CommandType 为 ...
- BZOJ 1876 [SDOI2009] SuperGcd | PY好题
题面就是让你求两个超级大整数,求GCD 题解: 题目本意应该是出题人想考考高精度取膜 但是可以通过一种神奇的Stein算法来做 由J. Stein 1961年提出的Stein算法很好的解决了欧几里德算 ...
- 转:ListView中getView的工作原理
ListView中getView的工作原理: [1]ListView asks adapter “give me a view” (getView) for each item of the list ...
- Python常用工具PyCharm
PyCharm 是我用过的python编辑器中,比较顺手的一个.而且可以跨平台,在macos和windows下面都可以用,这点比较好. 首先预览一下 PyCharm 在实际应用中的界面:(更改了PyC ...
- 转 Join的实现原理及优化思路
前言 前面我们已经了解了MySQLQueryOptimizer的工作原理,学习了Query优化的基本原则和思路,理解了索引选择的技巧,这一节我们将围绕Query语句中使用非常频繁,且随时可能存在性能隐 ...