我是靠谱客的博主 潇洒红牛,最近开发中收集的这篇文章主要介绍iterator迭代器遍历hashmap的使用陷阱,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

今天开发功能踩了一个很无语的坑,在此记录一下,提醒自己不要只注重概念,多了解一下原理!

在使用迭代器遍历集合时,如下代码:

...
while(iterator.hasNext()){
    System.out.println(iterator.next().getXxx()+"---"+iterator.next().getXxx());
}

我的意图是用迭代器依次调用集合中的对象的get方法,上面的getXxx()分别是返回两个对象属性值;坑就在这里,报异常java.util.NoSuchElementException(没有元素异常),但明明对象还没有输出遍历完成;

原因:每调用一次next(),就会获取下一位元素数据,改变指指针指向的是next(),并不是hasNext(),所以无论遍历次数怎么变化,你调用了next()他就会接着读取下一位;
总结:使用迭代器(Iterator)时,尽量一个遍历结构只有一个hasNext()和next(),关键是理解next()是改变指针指向并且读取元素数据的角色;

补充:
Iterator值传递机制:使用迭代器遍历集合时,是将集合的值传递给迭代器变量,并非把传递集合元素本身(所以对迭代变量进行赋值操作并不会影响到集合)
使用迭代遍历集合时,无法对集合元素进行修改,会报异常:java.util.ConcurrentModificationException

最后

以上就是潇洒红牛为你收集整理的iterator迭代器遍历hashmap的使用陷阱的全部内容,希望文章能够帮你解决iterator迭代器遍历hashmap的使用陷阱所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部