黑马程序员技术交流社区

标题: 为什么会报没有元素? [打印本页]

作者: Mr.飞碍特    时间: 2014-4-22 09:45
标题: 为什么会报没有元素?
//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)
为什么会报没有元素?


作者: 坏米饭    时间: 2014-4-22 11:38
实测结果:
{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就没了,当然报没有元素的异常。
作者: ⒈心只霸占沵    时间: 2014-4-22 11:50
next():方法,调用一次,就会将指向移到下一个元素,你在每一次循环里都调用了两次,所以没有迭代完,就已经把元素用光了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2