A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Mr.飞碍特 山林野马   /  2014-4-22 09:45  /  973 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

//Map集合
  Map<String,String> m=new HashMap();
   m.put("02","zhangshan");
   m.put("03","zhangshan");
   m.put("01","zhangshan");
   //Map可以打印
   System.out.println(m);
//取出方式
  //获取set集合的所有key
  Set<String> keyset=m.keySet();
  //迭代器
  Iterator<String> mapsetit=keyset.iterator();
  while(mapsetit.hasNext())
  {
   //获取key
   String key=mapsetit.next();
   //获取value
   String value=m.get(key);
   //System.out.println("key="+key+"  "+"value="+value);
   
   //System.out.println(key);为什么这句可以输出。
   //System.out.println(mapsetit.next());这句就不可以?

错误:
02
Exception in thread "main" java.util.NoSuchElementException
at java.util.HashMap$HashIterator.nextEntry(HashMap.java:796)
at java.util.HashMap$KeyIterator.next(HashMap.java:828)
at lianxi.dg.collectiondemo.main(collectiondemo.java:77)
为什么会报没有元素?

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

2 个回复

倒序浏览
实测结果:
{01=zhangshan, 02=zhangshan, 03=zhangshan}
key=01  value=zhangshan
01
02
key=03  value=zhangshan
03
Exception in thread "main" java.util.NoSuchElementException
        at java.util.HashMap$HashIterator.nextEntry(HashMap.java:796)
        at java.util.HashMap$KeyIterator.next(HashMap.java:828)
        at cn.heimabbs.mapTest.main(mapTest.java:33)

这报错就对了,循环到03的时候,next就没了,当然报没有元素的异常。

评分

参与人数 1技术分 +1 收起 理由
SyouRai_Tsk + 1

查看全部评分

回复 使用道具 举报
next():方法,调用一次,就会将指向移到下一个元素,你在每一次循环里都调用了两次,所以没有迭代完,就已经把元素用光了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马