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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© DoubleUUU 中级黑马   /  2015-11-11 23:34  /  605 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 DoubleUUU 于 2015-11-12 12:09 编辑

Map集合元素取出:
public class Test{
       public static void main(String[] args){
           Map<Integer,String> m=new HashMap<Integer,String>();
           m.put(16, "李四");
           m.put(12, "张三");
           m.put(11, "刘六");
           //Set<Map.Entry<K,V>> entrySet()返回此映射所包含的映射关系的 Set 视图。
           //Map.Entry为数据类型,映射项(键-值对)。
           Set<Map.Entry<Integer, String>> s=m.entrySet();
           //创建set集合的迭代器
           Iterator<Map.Entry<Integer, String>> it=s.iterator();
           while (it.hasNext()){
               //Map.Entry<Integer, String> me=it.next();
               Integer key=it.next().getKey();
               String value=it.next().getValue();
               System.out.println(key+"="+value);
           }}}
求大神讲解,为什么以上红色的的获取键值方式会报错?????


4 个回复

倒序浏览
Integer key=it.next().getKey()  String value=it.next.getValue()  调用了两次it.next,即每判断一次,取出两个元素。判断最后一次hasNext时,只有一个元素,而取了两次元素,就会NoSuchElementException错误。
回复 使用道具 举报
jiao731097245 发表于 2015-11-12 11:41
Integer key=it.next().getKey()  String value=it.next.getValue()  调用了两次it.next,即每判断一次,取 ...

明白了,多谢
回复 使用道具 举报
这个异常第一次见,学习了
回复 使用道具 举报
jlq 中级黑马 2015-11-12 23:38:43
报纸
支持一下  看卡
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马