`
小铁匠再战江湖
  • 浏览: 54611 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

while (list.iterator().hasNext())的错误

阅读更多
  近日,整理工作包下的警告出现了以下失误,让同事大大地鄙视了一把。
  我将很多
       for (Iterator<String> it = list.iterator(); it.hasNext();)
           {String str = (String) it.next();}
  改成了
       while (list.iterator().hasNext()) {
           String str = (String) list.iterator().next();}
  这个问题反映了我对for循环和Iterator接口理解不够深刻。
  很明显,问题的关键就在于忽略了:前一段代码中String str = (String) it.next();这句代码执行时不仅会返回游标右边的元素还会把游标移动到下一个位置。而后者list.iterator()不会发生变化,没有循环机制,只要判断list.iterator()游标右边有元素就会一直执行,造成死循环。

分享到:
评论

相关推荐

    Iterator遍历过程中list删除导致异常

    while (iterator.hasNext()) { String item = iterator.next(); if (item.equals("特定值")) { list.remove(item); // 这里会抛出ConcurrentModificationException } } ``` 为了解决这个问题,可以使用以下两种...

    JAVA中的Iterator的用法

    while (iterator.hasNext()) { String item = iterator.next(); System.out.println(item); } ``` #### 四、`Iterator`与`Collection`接口 `Collection`接口是所有集合类的根接口。它定义了一些基本的方法,包括...

    Java 程序显示 hasNext() 和 next() 方法的用法.docx

    while (iterator.hasNext()) { String element = iterator.next(); System.out.println(element); // 输出 "Geeks",然后输出 "for Geeks" // 如果需要删除当前元素,可以调用 iterator.remove(); } ``` 在这个...

    11-Iterator.rar

    while (iterator.hasNext()) { String item = iterator.next(); System.out.println(item); } ``` 这段代码首先创建了一个ArrayList,然后添加了三个元素。接着,通过调用`iterator()`方法获取一个迭代器实例。在...

    List,Set和Map遍历读取[归类].pdf

    while (iterator.hasNext()) { System.out.println(iterator.next()); } ``` - **方法二:JDK 5引入的增强型for循环(foreach)** ```java for (String item : list) { System.out.println(item); } ``` ...

    java遍历list集合.zip

    while (iterator.hasNext()) { String element = iterator.next(); System.out.println(element); } ``` 2. 增强for循环(foreach)遍历: 自Java 5引入后,增强for循环为遍历集合提供了一种简洁的语法。它适用于...

    java Iterator迭代器的使用

    while (it.hasNext()) { System.out.println(it.next()); } } } ``` 这个程序将依次打印出"Apple"、"Banana"和"Cherry"。 5. **异常处理** 在使用`Iterator`时,需要特别注意以下两种可能抛出的异常: - `...

    java常见算法

    while (it.hasNext()) { int a = it.next(); if (tmp.contains(a)) it.remove(); else tmp.add(a); } } 去不重 HashMap实现 public static void RemoveNotRepeat(List&lt;Character&gt; arrs) { Map,Integer&gt; ...

    java 中如何从LIST 对象取值

    while (iterator.hasNext()) { String element = iterator.next(); System.out.println(element); } ``` ##### 使用增强型`for`循环: ```java List&lt;String&gt; aList = new ArrayList(); // 添加元素到aList... ...

    java使用ListIterator对List遍历时添加修改删除​

    while (iterator.hasNext()) { System.out.println(iterator.next()); } ``` ### 3. 添加元素 在遍历过程中,可以使用`add(E element)`方法在当前迭代位置插入新元素,这会更新迭代器的状态,使其指向新插入元素...

    示例iterator使用及技巧

    Iterator&lt;String&gt; it = list.iterator(); // 获取Iterator实例 ``` ##### 3. 遍历集合 一旦获得了`Iterator`实例,就可以使用`hasNext()`方法检查是否还有更多的元素可以遍历,使用`next()`方法获取下一个元素。...

    HQL经典查询语句[文].pdf

    while(iterator.hasNext()){ String name = (String) iterator.next(); } ``` HQL还提供了多种内置的聚合函数,方便对数据进行统计分析。这些函数包括: 1. `count()`:用于计算记录的条数。例如,查询`customer`...

    google interview problem of iterator

    while (iterator.hasNext()) { T value = iterator.next(); if (value.intValue() % 2 == 0) { evenValue = value; hasEven = true; return; } } hasEven = false; } @Override public boolean hasNext...

    Map、Set、Iterator迭代详解

    while (iterator.hasNext()) { String element = iterator.next(); System.out.println(element); } ``` ### Java集合框架概述 #### 1. 集合框架简介 Java集合框架是一组相互关联的接口、抽象类和具体实现类,...

    Java 实例 - List 循环移动元素源代码+详细指导教程.zip

    while (iterator.hasNext()) { String element = iterator.next(); if ("B".equals(element)) { iterator.remove(); // 删除元素 list.add(0, element); // 将元素移到开头 } } ``` 2. 增强for循环...

    如何遍历一个java集合

    while (iterator.hasNext()) { String item = iterator.next(); System.out.println(item); } ``` 此外,如果需要有序地遍历HashSet,可以考虑使用LinkedHashSet,它维护了元素的插入顺序。 Java还提供了其他类型...

    JavaList.rar_javalist

    while (iterator.hasNext()) { String element = iterator.next(); System.out.println(element); } ``` 移除元素,使用`remove(int index)`或`remove(Object o)`: ```java myList.remove(0); // 移除第一个...

    Iterator的使用

    while (iterator.hasNext()) { String element = iterator.next(); // 处理element... } ``` ### 迭代器的优势 1. **灵活性**:迭代器允许在不改变集合结构的情况下遍历元素,这使得迭代器成为多线程环境下的...

    Collection类(集合类

    Iterator&lt;String&gt; it = list.iterator(); while (it.hasNext()) { System.out.println(it.next()); } // 输出:张三 // 李四 // 王五 // 也可以使用增强for循环遍历 for (String str : list) { System.out...

    Iterator详解

    while (iter.hasNext()) { String str = iter.next(); System.out.println(str); } ``` 4. **next()方法**: `next()`方法返回集合中的下一个元素,并将迭代器的内部指针向前移动一步。如果已经没有更多元素...

Global site tag (gtag.js) - Google Analytics