黑马程序员技术交流社区

标题: 迭代器问题 [打印本页]

作者: 黄邦荣    时间: 2012-10-26 13:21
标题: 迭代器问题
package itcast;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Test {
public static void sop(Object obj) {
  System.out.println(obj);
}
public static void main(String[] args)
{
  ArrayList al = new ArrayList();
  
  al.add("1");
  al.add("2");
  al.add("3");
  al.add("4");
  Iterator it= al.iterator();
  while(it.hasNext());
  {
   sop("next:"+it.next());
  }
}

}
编译能通过,但是没结果,这是什么情况,纠结了半小时了

未命名.jpg (39.23 KB, 下载次数: 21)

未命名.jpg

作者: 周万谋    时间: 2012-10-26 13:28
本帖最后由 周万谋 于 2012-10-26 13:33 编辑

首先,你的代码中添加的元素是String类型,那么在用迭代器取的时候需要强制类型转换,因为迭代器取出来的对象是Object类型的,
String str = (String) it.next();
其次,建议使用泛型,泛型可以限制添加的是同一个类型,泛型还可以将运行时异常转至编译期,泛型还有一个很爽的优点,取出的元素可以不用强转,建议这样写:
ArrayList<String> al = new ArrayList<String>();
  ......

作者: 范贞亮    时间: 2012-10-26 13:34
兄弟, 问题是你的while()后面有个分号 啊 , 下次小心点啊!
作者: 鲁中需    时间: 2012-10-26 13:41
3楼正解,细节决定成败。
作者: 陈琦    时间: 2012-10-26 14:02
一失足成千古恨啊
作者: 齐连涛    时间: 2012-10-26 15:08
要么在定义集合的时候定义泛型,要么就在迭代时强转




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2