`
unicorn25
  • 浏览: 67079 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

使用Iterator引起的java.util.NoSuchElementException错误

阅读更多

今天在使用Iterator时写了如下代码:

for (Iterator iter = map.keySet().iterator(); iter.hasNext();) { 
        HashMap hmap = new HashMap() ; 
        hmap.put("file";, iter.next()); 
        hmap.put("state";, (String)map.get(iter.next())); 
        listItem.add(hmap); 
} 

 
运行发现报错:java.util.NoSuchElementException

检查发现是2次使用了Iterator.next() 方法,导致边界溢出

做如下修改解决

另要注意:当iterator中的elements个数为偶数是不会报错的

for (Iterator iter = map.keySet().iterator(); iter.hasNext();) { 
        HashMap hmap = new HashMap() ; 
        String nextElement = (String)iter.next(); 
        hmap.put("file";, nextElement); 
        hmap.put("state";, (String)map.get(nextElement)); 
        listItem.add(hmap); 
} 

 

 

分享到:
评论

相关推荐

    java.util.pdf

    标题“java.util.pdf”暗示这是一个关于Java编程语言中util包的文档。由于描述和标签均重复标题,我们可以推断文档重点在于解释和示例展示java.util包中的类与接口。java.util是Java的标准库中的一个包,主要用于...

    Java.util随记.doc

    Java.util包是Java标准库中...总的来说,`Java.util`包中的`Iterator`和`List`接口为开发者提供了灵活且高效的数据操作手段,是日常开发中不可或缺的部分。理解并熟练运用这些接口,可以极大地提高代码的可读性和效率。

    Java源码分析:深入探讨Iterator模式

    在Java中,`java.util.Iterator`接口定义了以下三个主要方法: 1. `boolean hasNext()`:检查是否还有更多的元素。 2. `E next()`:返回集合中的下一个元素。 3. `void remove()`:从集合中移除当前元素。 这些...

    2022年Java源码分析:深入探讨Iterator模式Java教程.docx

    Java中的`java.util`包包含了多种集合类,如ArrayList、LinkedList、HashSet等,它们都实现了`Collection`接口。`Collection`接口是所有集合类的根接口,提供了添加、删除和检查元素的基本操作。例如,`add()`方法...

    java Iterator迭代器的使用

    4. **示例代码:MyIterator.java** 我们可以创建一个简单的程序,演示如何使用`Iterator`遍历ArrayList: ```java import java.util.ArrayList; import java.util.Iterator; public class MyIterator { ...

    JAVA--基础知识[归纳].pdf

    异常类如`EmptyStackException`、`NoSuchElementException`和`TooManyListenersException`是处理特定错误情况的。`EventListener`和`Observer`接口是事件处理和观察者模式的一部分,它们使得对象间可以进行通信和...

    Java Iterator接口遍历单列集合迭代器原理详解

    代码执行后的结果:在进行集合元素取出时,如果集合中已经没有元素了,还继续使用迭代器的next方法,将会发生java.util.NoSuchElementException没有集合元素的错误。 迭代器的实现原理:当遍历集合时,首先通过调用...

    Java实现Stack类

    import java.util.Iterator; import java.util.NoSuchElementException; import java.util.Scanner; public class Stack<Item> implements Iterable<Item> { private int N; private Node<Item> first; ...

    关于方法iterator()找不着的问题~~~~~

    确保你正确地导入了`java.util.Iterator`或者`java.lang.Iterable`。如果你的代码中看到`iterator()`,但编译器找不到,可能是因为导入了错误的类或包。 4. **实例化问题**: 在使用`iterator()`之前,你需要确保...

    内置迭代器的linked list例题

    import java.util.Iterator; public class LinkedListExample { public static void main(String[] args) { LinkedList<String> list = new LinkedList(); list.add("Element1"); list.add("Element2"); list....

    Iterator详解

    Java的迭代器接口位于`java.util`包中,它提供了遍历集合元素的基本方法。迭代器的主要方法包括`iterator()`、`hasNext()`、`next()`和`remove()`。 2. **iterator()方法**: `iterator()`方法是`Iterable`接口的...

    Iterator的使用

    在Java中,迭代器通常通过`java.util.Iterator`接口来实现。这个接口提供了两个主要的方法: 1. `boolean hasNext()`: 检查迭代器是否还有更多的元素。如果集合中还有未访问的元素,此方法将返回`true`;否则,返回...

    Java系列Iterator

    在Java中,迭代器是一个接口,位于`java.util`包下,主要用于遍历ArrayList、HashSet等集合类。迭代器的设计理念是“只读”和“向前遍历”,这意味着一旦开始遍历,就不能后退,只能按顺序访问元素。 迭代器接口...

    图解设计Iterator 源代码

    在`Main.java`文件中,通常会有测试代码,创建`BookShelf`对象,添加书籍,然后使用`Iterator`遍历并打印书架上的书籍。 在设计和实现`Iterator`时,有几点需要注意: 1. **线程安全**:如果你的迭代器需要在多...

    详解Java中Iterator迭代器的用法

    `Iterator`接口位于`java.util`包中,主要提供了三个核心方法: - `boolean hasNext()`: 检查迭代器是否还有更多的元素。如果集合中还有未遍历的元素,该方法返回`true`;否则返回`false`。 - `E next()`: 返回集合...

    java基础 集合-22-迭代器设计模式

    Java中的`Iterator`接口位于`java.util`包下,它是所有迭代器的基类。它提供了三个核心方法: - `hasNext()`: 检查当前迭代器是否还有更多的元素,返回布尔值。 - `next()`: 返回集合中的下一个元素,如果已到达...

    详解Java中的迭代迭代器Iterator与枚举器Enumeration

    import java.util.Iterator; import java.util.ListIterator; public class Stack<Item> implements Iterable<Item> { public Iterator<Item> iterator() { return new ListIterator(first); } } class ...

    Android迭代器模式demo

    在Java中,迭代器接口已经内置在`java.util.Iterator`类中。 3. **客户类(Client)**:使用迭代器来遍历聚合类的元素,而不直接与聚合类交互。在Android应用中,客户类可能是Activity、Fragment或其他组件。 现在...

    迭代器的用法

    Java中的`Iterator`接口位于`java.util`包中,定义了三个主要的方法: - `boolean hasNext()`: 检查迭代器是否还有更多的元素,如果存在下一个元素则返回`true`,否则返回`false`。 - `Object next()`: 返回迭代...

Global site tag (gtag.js) - Google Analytics