`
- 浏览:
55531 次
- 性别:
- 来自:
北京
-
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()游标右边有元素就会一直执行,造成死循环。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
while (iterator.hasNext()) { String item = iterator.next(); if (item.equals("特定值")) { list.remove(item); // 这里会抛出ConcurrentModificationException } } ``` 为了解决这个问题,可以使用以下两种...
while (iterator.hasNext()) { String item = iterator.next(); System.out.println(item); } ``` #### 四、`Iterator`与`Collection`接口 `Collection`接口是所有集合类的根接口。它定义了一些基本的方法,包括...
while (iterator.hasNext()) { String element = iterator.next(); System.out.println(element); // 输出 "Geeks",然后输出 "for Geeks" // 如果需要删除当前元素,可以调用 iterator.remove(); } ``` 在这个...
while (iterator.hasNext()) { String item = iterator.next(); System.out.println(item); } ``` 这段代码首先创建了一个ArrayList,然后添加了三个元素。接着,通过调用`iterator()`方法获取一个迭代器实例。在...
while (iterator.hasNext()) { System.out.println(iterator.next()); } ``` - **方法二:JDK 5引入的增强型for循环(foreach)** ```java for (String item : list) { System.out.println(item); } ``` ...
while (iterator.hasNext()) { String element = iterator.next(); System.out.println(element); } ``` 2. 增强for循环(foreach)遍历: 自Java 5引入后,增强for循环为遍历集合提供了一种简洁的语法。它适用于...
while (it.hasNext()) { System.out.println(it.next()); } } } ``` 这个程序将依次打印出"Apple"、"Banana"和"Cherry"。 5. **异常处理** 在使用`Iterator`时,需要特别注意以下两种可能抛出的异常: - `...
while (it.hasNext()) { int a = it.next(); if (tmp.contains(a)) it.remove(); else tmp.add(a); } } 去不重 HashMap实现 public static void RemoveNotRepeat(List<Character> arrs) { Map,Integer> ...
while (iterator.hasNext()) { String element = iterator.next(); System.out.println(element); } ``` ##### 使用增强型`for`循环: ```java List<String> aList = new ArrayList(); // 添加元素到aList... ...
while (iterator.hasNext()) { System.out.println(iterator.next()); } ``` ### 3. 添加元素 在遍历过程中,可以使用`add(E element)`方法在当前迭代位置插入新元素,这会更新迭代器的状态,使其指向新插入元素...
Iterator<String> it = list.iterator(); // 获取Iterator实例 ``` ##### 3. 遍历集合 一旦获得了`Iterator`实例,就可以使用`hasNext()`方法检查是否还有更多的元素可以遍历,使用`next()`方法获取下一个元素。...
while(iterator.hasNext()){ String name = (String) iterator.next(); } ``` HQL还提供了多种内置的聚合函数,方便对数据进行统计分析。这些函数包括: 1. `count()`:用于计算记录的条数。例如,查询`customer`...
while (iterator.hasNext()) { T value = iterator.next(); if (value.intValue() % 2 == 0) { evenValue = value; hasEven = true; return; } } hasEven = false; } @Override public boolean hasNext...
while (iterator.hasNext()) { String element = iterator.next(); System.out.println(element); } ``` ### Java集合框架概述 #### 1. 集合框架简介 Java集合框架是一组相互关联的接口、抽象类和具体实现类,...
while (iterator.hasNext()) { String element = iterator.next(); if ("B".equals(element)) { iterator.remove(); // 删除元素 list.add(0, element); // 将元素移到开头 } } ``` 2. 增强for循环...
while (iterator.hasNext()) { String item = iterator.next(); System.out.println(item); } ``` 此外,如果需要有序地遍历HashSet,可以考虑使用LinkedHashSet,它维护了元素的插入顺序。 Java还提供了其他类型...
while (iterator.hasNext()) { String element = iterator.next(); System.out.println(element); } ``` 移除元素,使用`remove(int index)`或`remove(Object o)`: ```java myList.remove(0); // 移除第一个...
while (iterator.hasNext()) { String element = iterator.next(); // 处理element... } ``` ### 迭代器的优势 1. **灵活性**:迭代器允许在不改变集合结构的情况下遍历元素,这使得迭代器成为多线程环境下的...
Iterator<String> it = list.iterator(); while (it.hasNext()) { System.out.println(it.next()); } // 输出:张三 // 李四 // 王五 // 也可以使用增强for循环遍历 for (String str : list) { System.out...
while (iter.hasNext()) { String str = iter.next(); System.out.println(str); } ``` 4. **next()方法**: `next()`方法返回集合中的下一个元素,并将迭代器的内部指针向前移动一步。如果已经没有更多元素...