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()) 呢?
首先,我先说下你程序里面出现的问题:
iter.next(),返回的是一个Iterator对象,所以String str = iter.next() 这句要么写成
String str =(String) iter.next() ,要么写成 Object str = iter.next().
第二,关于你的问题,你先,迭代器中让你先在判断中next了,然后你在系统输出再next,这肯定是有问题的,会报java.util.NoSuchElementException错。
最后,还是建议先学下Java基础。别盲目的敲代码
iter.next()返回的是一个E,就是一个泛型变量,不是iterator对象,这个你应该使用泛型的。
java-api的对这个next()解释:Returns the next element in the iteration.