黑马程序员技术交流社区
标题:
Map扩展练习时出现问题了
[打印本页]
作者:
范龙波
时间:
2013-5-7 21:58
标题:
Map扩展练习时出现问题了
本帖最后由 范龙波 于 2013-5-8 05:21 编辑
import java.util.*;
class StudentDemo
{
public static void main(String[] args)
{
HashMap<String,HashMap> CZBK=new HashMap<String,HashMap>();
HashMap<String,Integer> YuReBan=new HashMap<String,Integer>();
HashMap<String,Integer> JiuYeBan=new HashMap<String,Integer>();
CZBK.put("第一层",YuReBan);
CZBK.put("第二层",JiuYeBan);
YuReBan.put("lisi01",26);
YuReBan.put("lisi02",29);
YuReBan.put("lisi03",26);
YuReBan.put("lisi04",29);
JiuYeBan.put("李四02",28);
JiuYeBan.put("李四01",29);
sop(YuReBan);
sop(JiuYeBan);
sop(CZBK);
GetMap(YuReBan); //为什么只能打印出YuReBan的lisi02 和04 其他的打印不出来呢?
}
public static void sop(Object obj)
{
System.out.println(obj);
}
public static void GetMap(HashMap<String,Integer> tm)
{
Iterator<String> it=tm.keySet().iterator();
while(it.hasNext())
{
String name=it.next();
Integer age=tm.get(it.next());
System.out.println(name+"\t"+age);
}
}
}
作者:
杜超
时间:
2013-5-7 22:37
本帖最后由 杜超 于 2013-5-7 22:43 编辑
Integer age=tm.get(it.next());这句话的问题
你把it.next()给位name就可以了,这里不能把方法作为键获取值的,
it.next()有特殊含义的,把他作为参数传进去得到的是下一个键,获取的是下一个键的值
所以只获取2个,而且这两个键和值不是对应的,你把年龄改成不一样的就看出来了
作者:
风乐
时间:
2013-5-7 22:46
Integer age=tm.get(it.next());里面的it.next()改成name,你用了两个it.next(),他就走了两个才打印一个
作者:
范龙波
时间:
2013-5-8 04:40
啊,明白了,第二次犯这种错误了。谢了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2