嵌套map集合的遍历方法仍是keySet与entrySet两种方法, 一 一为您介绍
//定义一个集合保存JavaEE学生的学号与名字
//定义一个集合保存Ui的学号与名字
//定义一个集合保存web的学号与名字
Map<String, String> javaEE = new LinkedHashMap<String, String>();
javaEE.put("001", "小明");
javaEE.put("002", "小红");
javaEE.put("003", "小绿");
Map<String, String> uiStud = new LinkedHashMap<String, String>();
uiStud.put("004", "张三");
uiStud.put("005", "李四");
uiStud.put("006", "王五");
Map<String, String> webStud = new LinkedHashMap<String, String>();
webStud.put("007", "二月红");
webStud.put("008", "半截里");
webStud.put("009", "吴老狗");
//因为这是嵌套的map集合,student的泛型之一为Map
Map<String, Map<String, String>> student = new LinkedHashMap<String, Map<String, String>>();
student.put("JavaEE", javaEE);
student.put("Ui", uiStud);
student.put("Web", webStud);
//1.使用keySet遍历 返回的key值是set集合
Set<String> subject=student.keySet();
//2.使用迭代器
Iterator<String> it=subject.iterator();
while(it.hasNext()){
String key=it.next();
//根据key值返回的是map集合
Map<String,String> stu=student.get(key);
System.out.println(key+" "+stu);
}
//3.使用entrySet 获取每一个(key,value)的集合
Set<Map.Entry<String,Map<String,String>>> entrys=student.entrySet();
//4.使用迭代器遍历entrys
Iterator<Map.Entry<String,Map<String,String>>> it1=entrys.iterator();
while (it1.hasNext()){
//遍历的每一项的返回值是 Map.Entry>
Map.Entry<String,Map<String,String>> stud=it1.next();
//遍历出来的key值
String key=stud.getKey();
//遍历出来的value值,返回的是Map集合
Map<String,String> vale=stud.getValue();
//遍历各个学科的集合,遍历出来学号姓名
Set<String> studen=vale.keySet();
for (String va:studen) {
System.out.println("学科="+key+"学号"+va+"姓名"+vale.get(va));
}
}
//建立一个map集合
HashMap<String,String> map1=new HashMap<String, String>();
for (int i = 0; i <10000000 ; i++) {
map1.put("001"+i,"sd");
}
//1.使用keyset遍历
long start= System.currentTimeMillis();
Set<String> getKey=map1.keySet();
Iterator<String> it=getKey.iterator();
while (it.hasNext())
{
String value=map1.get(it.next());
}
System.out.println("使用keyset遍历花费"+(System.currentTimeMillis()-start));
//2.使用entrySet遍历
long start1= System.currentTimeMillis();
Set<Map.Entry<String,String>> entry=map1.entrySet();
Iterator<Map.Entry<String,String>> it1=entry.iterator();
while (it1.hasNext())
{
Map.Entry<String,String> map2=it1.next();
String key=map2.getKey();
String value=map2.getValue();
}
System.out.println("使用entrySet遍历花费"+(System.currentTimeMillis()-start1));