2 yumin902 yumin902 于 2014.07.11 10:16 提问

具体内容如下,为什么呀?

import java.util.List ;
import java.util.ArrayList ;
import java.util.Iterator ;
public class IteratorDemo02{
public static void main(String args[]){
List all= new ArrayList() ; //
all.add("hello") ;
all.add("_") ;
all.add("world") ;
Iterator iter = all.iterator() ; // 为Iterator接口实例化
while(iter.hasNext()){ // 判断是否有内容
String str = iter.next() ;
if("_".equals(str)){
iter.remove() ; // 删除元素

}else{
System.out.println(str) ; // 输出内容
}
}
System.out.println("删除之后的集合:" + all) ;
}

这个程序为什么要写成String str = iter.next()?而不可以直接写成if("_".equals(iter.next()))和System.out.println(iter.next()) 呢?

2个回答

zhangxiaolei11111111
zhangxiaolei11111111   2014.07.11 15:27

首先,我先说下你程序里面出现的问题:
iter.next(),返回的是一个Iterator对象,所以String str = iter.next() 这句要么写成
String str =(String) iter.next() ,要么写成 Object str = iter.next().
第二,关于你的问题,你先,迭代器中让你先在判断中next了,然后你在系统输出再next,这肯定是有问题的,会报java.util.NoSuchElementException错。
最后,还是建议先学下Java基础。别盲目的敲代码

u013871218
u013871218 推荐使用这个形式:List<String> list = new ArrayL:ist<String>();这样子不用对这个类型进行擦除
大约 3 年之前 回复
u013871218
u013871218   2014.08.02 11:23

iter.next()返回的是一个E,就是一个泛型变量,不是iterator对象,这个你应该使用泛型的。
java-api的对这个next()解释:Returns the next element in the iteration.

Csdn user default icon
上传中...
上传图片
插入图片