为了账号安全,请及时绑定邮箱和手机立即绑定

最后到遍历学生时遍历不出来???

最后到遍历学生时遍历不出来???

实力走天下 2017-05-28 18:48:55
package demo13;import java.util.ArrayList;import java.util.HashMap;import java.util.Set;public class nestdemo {public static void main(String[] args) { HashMap<String,HashMap<String,ArrayList<Student>>> 全国=new HashMap<String,HashMap<String,ArrayList<Student>>>(); //河南地区 HashMap<String,ArrayList<Student>> 河南地区=new HashMap<String,ArrayList<Student>>(); ArrayList<Student> 高校区=new ArrayList<Student>(); Student one=new Student("路人1",18); Student two=new Student("路人2",18); 高校区.add(one); 高校区.add(two); 河南地区.put("河南", 高校区); ArrayList<Student> 低校区=new ArrayList<Student>(); Student one1=new Student("路人3",18); Student two1=new Student("路人4",18); 低校区.add(one1); 低校区.add(two1); 河南地区.put("河南", 低校区); 全国.put("河南地区数据:", 河南地区); //北京地区 HashMap<String,ArrayList<Student>>北京地区=new HashMap<String,ArrayList<Student>>(); ArrayList<Student> 北京高校区=new ArrayList<Student>(); Student one11=new Student("路人1",18); Student two11=new Student("路人2",18); 高校区.add(one11); 高校区.add(two11); 河南地区.put("北京", 北京高校区); ArrayList<Student> 北京低校区=new ArrayList<Student>(); Student one3=new Student("路人3",18); Student two4=new Student("路人4",18); 低校区.add(one3); 低校区.add(two4); 河南地区.put("河南", 北京低校区); 全国.put("北京地区数据:", 北京地区); //遍历 Set<String> 总key=全国.keySet(); for(String key:总key){ System.out.println(key); HashMap<String, ArrayList<Student>> value=全国.get(key); Set<String> 分地区value= value.keySet(); for(String key2: 分地区value){ System.out.println("来过"); ArrayList<Student> 校区value=value.get(key2); for(Student 学生value: 校区value){ System.out.println("也来过");//此处不显示 System.out.println("\t"+学生value.getName()+"\t"+学生value.getAge()); } }     }}}
查看完整描述

1 回答

?
慕仰9221625

TA贡献5条经验 获得超1个赞

package demo13;

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

public class nestdemo {
	public static void main(String[] args) {
		HashMap<String, HashMap<String, ArrayList<Student>>> 全国 = new HashMap<String, HashMap<String, ArrayList<Student>>>();
		// 河南地区
		HashMap<String, ArrayList<Student>> 河南地区 = new HashMap<String, ArrayList<Student>>();
		ArrayList<Student> 高校区 = new ArrayList<Student>();
		Student one = new Student("路人1", 18);
		Student two = new Student("路人2", 18);
		高校区.add(one);
		高校区.add(two);
		河南地区.put("河南高校区", 高校区);	// ##1
		ArrayList<Student> 低校区 = new ArrayList<Student>();
		Student one1 = new Student("路人3", 18);
		Student two1 = new Student("路人4", 18);
		低校区.add(one1);
		低校区.add(two1);
		河南地区.put("河南低校区", 低校区);	// ##原代码中与(##1)处的key相同,会出现覆盖
		全国.put("河南地区数据:", 河南地区);
		// 北京地区
		HashMap<String, ArrayList<Student>> 北京地区 = new HashMap<String, ArrayList<Student>>();
		ArrayList<Student> 北京高校区 = new ArrayList<Student>();
		Student one11 = new Student("路人1", 18);
		Student two11 = new Student("路人2", 18);
		北京高校区.add(one11);	// ##
		北京高校区.add(two11);// ##
		北京地区.put("北京高校区", 北京高校区);	// ##
		ArrayList<Student> 北京低校区 = new ArrayList<Student>();
		Student one3 = new Student("路人3", 18);
		Student two4 = new Student("路人4", 18);
		北京低校区.add(one3);	// ##
		北京低校区.add(two4);	// ##
		北京地区.put("北京低校区", 北京低校区);	// ##
		全国.put("北京地区数据:", 北京地区);
		// 遍历
		Set<String> 总key = 全国.keySet();
		for (String key : 总key) {
			System.out.println(key);

			HashMap<String, ArrayList<Student>> value = 全国.get(key);
			Set<String> 分地区value = value.keySet();
			for (String key2 : 分地区value) {
				System.out.println("  " + key2+"----来过");    // ##
				ArrayList<Student> 校区value = value.get(key2);
				for (Student 学生value : 校区value) {
					System.out.println("    学生信息----也来过");// 此处不显示 ##
					System.out.println("\t" + 学生value.getName() + "\t" + 学生value.getAge());
				}
			}

		}
	}
}

备注中带有##的是当前行有做修改

查看完整回答
反对 回复 2017-05-29
  • 实力走天下
    实力走天下
    ##原代码中与(##1)处的key相同,会出现覆盖,没有相同啊, 控制台不显示一个学生信息 最后这一段好像没运行,for (Student 学生value : 校区value) { System.out.println(" 学生信息----也来过");// 此处不显示 ## System.out.println("\t" + 学生value.getName() + "\t" + 学生value.getAge()); } }
  • 慕仰9221625
    慕仰9221625
    1.我说的覆盖是指 【河南地区.put("河南", 高校区);】 和 【河南地区.put("河南", 低校区);】 这两条语句put到相同的key(河南)上,不修改的话在最后取值时,这一块的数据只能取到低校区的学生。 2.看到没有运行是因为前面的赋值有些问题,导致有些集合没赋值,所以是空集合,也就没有执行。你可以按照调整后的代码跑一遍,应该是可以看到有结果的。
  • 1 回答
  • 0 关注
  • 1448 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信