第3章 Map集合的嵌套

1.1 Map中嵌套Map
1.1.1 案例代码十一

package com.itheima_03;

public class Student {
private String num;
private String name;
public Student() {
super();
// TODO Auto-generated constructor stub
}
public Student(String num, String name) {
super();
this.num = num;
this.name = name;
}
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Student [num=" + num + ", name=" + name + "]";
}
}

package com.itheima_03;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/*
 * itheima:基础班,就业班
基础班:01 zhangsan;02 lisi
就业班:01 wangwu;02 zhaoliu

分析:
我们需要有班级和学生,班级和学生之间是一种对应关系(映射关系),
由于有对应关系,所以我们可以使用Map集合来存储这样的数据,
可以使用班级作为key,学生作为value,
Map中的key只能对应一个value,但是我们一个班级中有多个学生,
我们可以创建一个包含多个学生的集合,让班级和这个集合产生一一对应的关系,
学生信息分为学号和姓名,这也是一种对应关系,所以我们使用Map集合来存储学生信息
学校Map
基础班 基础班学生Map
就业班 就业班学生Map
Map嵌套Map


 *
 */
public class MapTest {
public static void main(String[] args) {
//学校Map
Map<String,Map<String,String>> itheima = new HashMap<String,Map<String,String>>();
//基础班学生Map
Map<String,String> base = new HashMap<String,String>();
base.put("01", "zhangsan");
base.put("02", "lisi");
//就业班学生Map
Map<String,String> job = new HashMap<String,String>();
job.put("01", "wangwu");
job.put("02", "zhaoliu");
//把包含了学生的Map添加到学校Map中
itheima.put("基础班", base);
itheima.put("就业班", job);
//遍历学校Map,查看有多少个班级和对应的学生
//先获取所有的班级
Set<String> keys =itheima.keySet();
for (String key : keys) {
//输出班级名称
System.out.println("班级名称:" + key);
//根据班级获取对应的所有学生
Map<String,String> stus = itheima.get(key);
//获取所有学生的学号
Set<String> nums = stus.keySet();
for (String num : nums) {
//根据学号获取学生姓名
String name = stus.get(num);
System.out.println("学号:" + num + ",姓名:" + name);
}
}
}
}

1.1.2 案例代码十二

package com.itheima_03;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

/*
 * itheima:基础班,就业班
基础班:01 zhangsan;02 lisi
就业班:01 wangwu;02 zhaoliu
更为面向对象
学校Map
基础班        基础班学生List
就业班        就业班学生List
Map嵌套Collection
 */
public class MapTest2 {
public static void main(String[] args) {
//学校Map
Map<String,List<Student>> itheima = new HashMap<String,List<Student>>();
//基础班学生List
List<Student> base = new ArrayList<Student>();
base.add(new Student("01","zhangsan"));
base.add(new Student("02","lisi"));
//就业班学生List
List<Student> job = new ArrayList<Student>();
job.add(new Student("01","wangwu"));
job.add(new Student("02","zhaoliu"));
//把包含了学生对象的List添加到学校Map中
itheima.put("基础班", base);
itheima.put("就业班", job);
//遍历学校Map,查看有多少班级和对应的学生
//获取所有Entry对象
Set<Map.Entry<String,List<Student>>> entrys = itheima.entrySet();
for (Map.Entry<String, List<Student>> entry : entrys) {
//获取班级
String key = entry.getKey();
System.out.println("班级名称:" + key);
//获取包含了学生对象List
List<Student> value = entry.getValue();
for (Student student : value) {
System.out.println(student);
}
}
}
}

原文地址:http://blog.51cto.com/13517854/2097273

时间: 2024-10-07 10:58:27

第3章 Map集合的嵌套的相关文章

递归、嵌套for循环、map集合方式实现树形结构菜单列表查询

有时候, 我们需要用到菜单列表,但是怎么样去实现一个菜单列表的编写呢,这是一重要的问题. 比如我们需要编写一个树形结构的菜单,那么我们可以使用JQuery的zTree插件:http://www.treejs.cn/v3/main.php#_zTreeInfo 例如现在需要编写一个这样的菜单列表.那么就可以使用JQuery的zTree插件. 先看一下数据库表结构. CREATE TABLE `permission` ( `id` int(11) NOT NULL AUTO_INCREMENT, `

第09章:集合

第09章:集合总结: 1:Set集合(理解) (1)Set集合的特点 无序,唯一 (2)HashSet集合(掌握) A:底层数据结构是哈希表(是一个元素为链表的数组) B:哈希表底层依赖两个方法:hashCode()和equals() 执行顺序: 首先比较哈希值是否相同 相同:继续执行equals()方法 返回true:元素重复了,不添加 返回false:直接把元素添加到集合 不同:就直接把元素添加到集合 C:如何保证元素唯一性的呢? 由hashCode()和equals()保证的 D:开发的时

识别Json字符串并分隔成Map集合

识别Json字符串并分隔成Map集合 前言: 最近又看了点Java的知识,于是想着把CYQ.Data V5迁移到Java版本. 过程发现坑很多,理论上看大部分很相似,实践上代码写起来发现大部分都要重新思考方案. 遇到的C#转Java的一些小问题: 1:C#的ref:这个参数的主要意图是: 就算方法内部重新对参数重新(new)赋值,也能保证外部的参数指向新的值. Java木有了,不知道新的方案是什么?还是说只能避免方法内部重新(new)赋值? 2:C#的out:这个参数的主要意图是: 处理多值返回

黑马程序员——Java基础---集合(二)------Map集合

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- Map集合 一.概述 1.简述: Map<K,V>集合是一个接口,和List集合及Set集合不同的是,它是双列集合,并且可以给对象加上名字,即键(Key) 2.特点: 1)该集合存储键值对,一对一对往里存 2)要保证键的唯一性

Java版本:识别Json字符串并分隔成Map集合

前言: 最近又看了点Java的知识,于是想着把CYQ.Data V5迁移到Java版本. 过程发现坑很多,理论上看大部分很相似,实践上代码写起来发现大部分都要重新思考方案. 遇到的C#转Java的一些小问题: 1:C#的ref:这个参数的主要意图是: 就算方法内部重新对参数重新(new)赋值,也能保证外部的参数指向新的值. Java木有了,不知道新的方案是什么?还是说只能避免方法内部重新(new)赋值? 2:C#的out:这个参数的主要意图是: 处理多值返回的问题. Java木有了,只能改返回数

Map集合案例

1.获取字符串中每一个字母出现的次数. 比如"aababcabcdabcde",结果为:a(5)b(4)c(3)d(2)e(1) 分析如下: package mapexercise; import java.util.Scanner; import java.util.Set; import java.util.TreeMap; /** * Created by gao on 15-12-22. */ /* * 需求 :"aababcabcdabcde",获取字符串

JAVA学习第三十八课(常用对象API)- 集合框架(六)— Map集合及其常用方法

一.Map集合特点 Map集合(双列集合)一次添加一对元素,Collection集合(单列集合)一次添加一个元素 接口 Map<K,V>,实际上存储的是键值对 特点: 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值. 也就是说Map中必须保证键的唯一性 二.常用方法 1.添加:value = put(key,value);返回前一个和key相关联的值,如果没有返回null 2.删除:void clear();把Map中的所有映射关系清除 value remove(ke

Collections工具类、Map集合、HashMap、Hashtable(十八)

1.Map集合概述和特点 * A:Map接口概述 * 去重复, * 查看API可以知道, * 将键映射到值的对象, * 一个映射不能包含重复的键, * 每个键最多只能映射到一个值.* B:Map接口和Collection接口的不同 * Map是双列的,Collection是单列的. * Map的键唯一,Collection的子体系Set是唯一的,即不重复. * Map集合的数据结构值针对键有效,跟值无关;Collection集合的数据结构是针对元素有效. 2.Map集合的功能概述 * a:添加功

Map集合的两种取出方式

Map集合有两种取出方式, 1.keySet:将Map中的键存入Set集合,利用set的迭代器来处理所有的键 举例代码如下: import java.util.*; class Test { public static void main(String[] args) { Map<String, Integer> map = new HashMap<String, Integer>(); map.put("fan", 23); map.put("pen