java中map集合嵌套形式简单示例

package day05;
import java.util.*;

import day02.Sop;

定义了一个学生类,封装了id和name属性,提供一个全参构造器,并复写toSting方法

class Student{
private String id;

private String name;


Student(String id,String name){
this.id=id;
this.name=name;

}


public String toString(){
return id+"::"+name;
}
}

Map<key,value> map集合是以键值对存储的,其中的键值也可以是集合,这样就出现了集合嵌套形式如:Map<String,Map<String,String>>;Map<String,List<Student>>

需求是传智播客的学校有就业班和预热班,每个类型的班级里有自己的学员的学号和姓名,要求进行遍历输出班级类型和学员信息:

class MapDemo {
public static void main(String[] args) {
Map<String,List<Student>> czbk=new HashMap<String,List<Student>>();//定义一个map集合,其中键是String类型,值是List集合(list集合中存储的是学生类型的元素)
List<Student> yureban=new ArrayList<Student>();//定义预热班集合

List<Student> jiuyeban=new ArrayList<Student>();//定义就业办集合

//向czbk  Map集合中存入元素

czbk.put("yureban", yureban);

czbk.put("jiuyeban", jiuyeban);

//分别向预热班和就业班中存入元素

yureban.add(new Student("01","wuji"));
yureban.add(new Student("02","zhangmin"));
jiuyeban.add(new Student("01","damo"));

jiuyeban.add(new Student("02","zushi"));

获取czbk中的键值,通过第一次循环获取键所对应的班级集合,在通过遍历班级集合来获取集合中的学生信息,通过两次while循环输入班级类型和学生信息

Iterator<String> it=czbk.keySet().iterator();
while(it.hasNext()){
String roomName=it.next();
List<Student> banji=czbk.get(roomName);
Iterator<Student> iter=banji.iterator();
while(iter.hasNext()){
Student stu=iter.next();
Sop.sop(roomName+"  "+stu.toString());
}
}


/*

//该处代码与上面的功能一致,是在map集合中再嵌套一个map集合,并通过两次while循环获取班级类型和学生信息

Map<String,Map<String,String>> map=new HashMap<String,Map<String,String>>();
Map<String,String> yure=new HashMap<String,String>();
Map<String,String> jiuye=new HashMap<String,String>();
map.put("yureban", yure);
map.put("jiuyeban", jiuye);
yure.put("01", "zhangsan");
yure.put("02", "lisi");
jiuye.put("01"," wangwu");
jiuye.put("02", "zhaoliu");

Iterator<String> it=map.keySet().iterator();
while(it.hasNext()){
String nameRoom=it.next();
Map<String,String> nameMap=map.get(nameRoom);
Iterator<Map.Entry<String, String>> iter=nameMap.entrySet().iterator();
while(iter.hasNext()){
Map.Entry<String, String> me=iter.next();
String id=me.getKey();
String name=me.getValue();
Sop.sop(nameRoom+"id: "+id+" name:"+name);
}
}
*/
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值