【JAVA学习】Iterator迭代器导致的java.util.NoSuchElementException原因与解决方法
2014-04-07 01:03
429 查看
简单的说:
原因:循环中不能用两次(含)的next()方法。
解决方法:将next()取出的数据先传给一个新的对象,用的时候再想方法取出来。
我们可以在JDK文档中看到 Iterator 的三个方法(如下表),java.util.NoSuchElementException是由next()导致的!见下面红字
返回迭代的下一个元素。
返回:迭代的下一个元素。抛出:
异常代码如下:
改进过后的代码如下:
原因:循环中不能用两次(含)的next()方法。
解决方法:将next()取出的数据先传给一个新的对象,用的时候再想方法取出来。
我们可以在JDK文档中看到 Iterator 的三个方法(如下表),java.util.NoSuchElementException是由next()导致的!见下面红字
方法摘要 | |
---|---|
boolean | hasNext() 如果仍有元素可以迭代,则返回 true。 |
E | next() 返回迭代的下一个元素。 |
void | remove() 从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。 |
next
E next()
返回迭代的下一个元素。
返回:迭代的下一个元素。抛出:
NoSuchElementException- 没有元素可以迭代。 ←就是这里
异常代码如下:
//用迭代器遍历hashMap,并方符合条件时返回值,常识:迭代器初始位置指在在列表第一个数据的上面,而不是指在第一个数据!重点是next()方法不能在循环中调用两次,否则会报java.util.NoSuchElementException boolean isOk = false; Iterator<Map.Entry<String, String>> iter = map.entrySet().iterator(); while(iter.hasNext()){ //hashNext() if(name.equals(iter.next().getKey())){//next()一次 System.out.println("姓名:" + iter.next().getKey();//两次 System.out.println("电话:" + iter.next().getValue();//三次 isOk = true; break; } } if(isOk) { //nothing } else{ System.out.println("查无此人!"); }
改进过后的代码如下:
boolean isOk = false; Iterator<Map.Entry<String, String>> iter = map.entrySet().iterator(); while(iter.hasNext()){ Map.Entry<String, String> index = iter.next();//next() 仅此一次,创建了一个新对象,并将next()取出的值传给它 String outname = index.getKey();//再将值取出 String outnumber = index.getValue();//再将值取出 if(name.equals(outname)){//这里也不用next()方法了 System.out.println("姓名:" + outname); System.out.println("电话:" + outnumber); isOk = true; break; } } if(isOk) { //nothing } else{ System.out.println("查无此人!"); }
相关文章推荐
- Iterator迭代器导致的java.util.NoSuchElementException原因与解决方法
- 迭代器(Iterator)的java.util.NoSuchElementException错误的改正
- "java.util.NoSuchElementException: No value present" 问题解决:重写hashCode 和 equals 方法
- java.util.NoSuchElementException原因
- 解决:Redis:java.util.NoSuchElementException: Unable to validate object at
- java.util.NoSuchElementException解决办法
- Iterator与java.util.NoSuchElementException异常
- 关于java学习之中遇到的一些问题之:java.util.NoSuchElementException.
- 解决sqoop java.util.NoSuchElementException
- Android编程:解决异常“java.util.NoSuchElementException”
- java.util.NoSuchElementException解决办法
- java.util.NoSuchElementException解决办法
- java.util.NoSuchElementException错误 解决办法
- java.util.NoSuchElementException:Hashtable Enumerator 解决办法
- 使用Iterator引起的java.util.NoSuchElementException异常
- java.util.NoSuchElementException解决办法
- 解决sqoop java.util.NoSuchElementException
- Iterator错误:java.util.NoSuchElementException
- java.util.NoSuchElementException: No mapping for class sun.awt.AppContext
- java.util.NoSuchElementException