今天在使用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包的文档。由于描述和标签均重复标题,我们可以推断文档重点在于解释和示例展示java.util包中的类与接口。java.util是Java的标准库中的一个包,主要用于...
Java.util包是Java标准库中...总的来说,`Java.util`包中的`Iterator`和`List`接口为开发者提供了灵活且高效的数据操作手段,是日常开发中不可或缺的部分。理解并熟练运用这些接口,可以极大地提高代码的可读性和效率。
在Java中,`java.util.Iterator`接口定义了以下三个主要方法: 1. `boolean hasNext()`:检查是否还有更多的元素。 2. `E next()`:返回集合中的下一个元素。 3. `void remove()`:从集合中移除当前元素。 这些...
Java中的`java.util`包包含了多种集合类,如ArrayList、LinkedList、HashSet等,它们都实现了`Collection`接口。`Collection`接口是所有集合类的根接口,提供了添加、删除和检查元素的基本操作。例如,`add()`方法...
4. **示例代码:MyIterator.java** 我们可以创建一个简单的程序,演示如何使用`Iterator`遍历ArrayList: ```java import java.util.ArrayList; import java.util.Iterator; public class MyIterator { ...
异常类如`EmptyStackException`、`NoSuchElementException`和`TooManyListenersException`是处理特定错误情况的。`EventListener`和`Observer`接口是事件处理和观察者模式的一部分,它们使得对象间可以进行通信和...
代码执行后的结果:在进行集合元素取出时,如果集合中已经没有元素了,还继续使用迭代器的next方法,将会发生java.util.NoSuchElementException没有集合元素的错误。 迭代器的实现原理:当遍历集合时,首先通过调用...
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; ...
确保你正确地导入了`java.util.Iterator`或者`java.lang.Iterable`。如果你的代码中看到`iterator()`,但编译器找不到,可能是因为导入了错误的类或包。 4. **实例化问题**: 在使用`iterator()`之前,你需要确保...
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....
Java的迭代器接口位于`java.util`包中,它提供了遍历集合元素的基本方法。迭代器的主要方法包括`iterator()`、`hasNext()`、`next()`和`remove()`。 2. **iterator()方法**: `iterator()`方法是`Iterable`接口的...
在Java中,迭代器通常通过`java.util.Iterator`接口来实现。这个接口提供了两个主要的方法: 1. `boolean hasNext()`: 检查迭代器是否还有更多的元素。如果集合中还有未访问的元素,此方法将返回`true`;否则,返回...
在Java中,迭代器是一个接口,位于`java.util`包下,主要用于遍历ArrayList、HashSet等集合类。迭代器的设计理念是“只读”和“向前遍历”,这意味着一旦开始遍历,就不能后退,只能按顺序访问元素。 迭代器接口...
在`Main.java`文件中,通常会有测试代码,创建`BookShelf`对象,添加书籍,然后使用`Iterator`遍历并打印书架上的书籍。 在设计和实现`Iterator`时,有几点需要注意: 1. **线程安全**:如果你的迭代器需要在多...
`Iterator`接口位于`java.util`包中,主要提供了三个核心方法: - `boolean hasNext()`: 检查迭代器是否还有更多的元素。如果集合中还有未遍历的元素,该方法返回`true`;否则返回`false`。 - `E next()`: 返回集合...
Java中的`Iterator`接口位于`java.util`包下,它是所有迭代器的基类。它提供了三个核心方法: - `hasNext()`: 检查当前迭代器是否还有更多的元素,返回布尔值。 - `next()`: 返回集合中的下一个元素,如果已到达...
import java.util.Iterator; import java.util.ListIterator; public class Stack<Item> implements Iterable<Item> { public Iterator<Item> iterator() { return new ListIterator(first); } } class ...
在Java中,迭代器接口已经内置在`java.util.Iterator`类中。 3. **客户类(Client)**:使用迭代器来遍历聚合类的元素,而不直接与聚合类交互。在Android应用中,客户类可能是Activity、Fragment或其他组件。 现在...
Java中的`Iterator`接口位于`java.util`包中,定义了三个主要的方法: - `boolean hasNext()`: 检查迭代器是否还有更多的元素,如果存在下一个元素则返回`true`,否则返回`false`。 - `Object next()`: 返回迭代...