黑马程序员技术交流社区
标题:
迭代的问题
[打印本页]
作者:
龚振 龚振 龚振
时间:
2012-4-13 21:55
标题:
迭代的问题
本帖最后由 klas2008 于 2012-4-12 21:29 编辑
谁能帮我分析一下,当我把
Object obj = it.next();拿到外面来时
,程序就变成了如图所示,卡住了。
主要想了解一下这个过程是怎样的,怎么就卡住了呢?在哪里卡住了?
import java.util.*;
public class rr{
public static void main(String[] args){
ArrayList al = new ArrayList();
al.add("java01");
al.add("java02");
al.add("java01");
al.add("java03");
al.add("java03");
al.add("java04");
System.out.println(al);
al = SingleElement(al);
System.out.println(al);
}
public static ArrayList SingleElement(ArrayList al){
ArrayList tempal = new ArrayList();
Iterator it = al.iterator();
Object obj = it.next();
while(it.hasNext()){
// Object obj = it.next();
if(!(tempal.contains(obj))){
tempal.add(obj);
}
}
return tempal;
}
}
QQ截图20120412211704.jpg
(7.07 KB, 下载次数: 30)
下载附件
2012-4-12 21:21 上传
作者:
贠(yun)靖
时间:
2012-4-13 22:16
怎么想到把这个放到外面去了?
next()是去除集合中的元素, 放到外面只取了一个,while循环就成无线循环了 因为集合里面永远都是 sizi() - 1 个元素了
作者:
黑马-刘昌文
时间:
2012-4-13 22:21
while循环变成了死循环
作者:
马强
时间:
2012-4-13 22:41
Object obj = it.next();
System.out.println(obj);
while(it.hasNext())
{
if(!(tempal.contains(obj)))
{
System.out.println("l");
tempal.add(obj);
System.out.println("2");
}
} (在这几个位置我加入了几个打印语句,发现打印了数组,1,java01,2,之后卡主)-----while不再走if,无限循环了,hasnext返回true,但是不进行next。 一直都是真。
作者:
龚振 龚振 龚振
时间:
2012-4-13 23:02
不小心写出去了,后来不动了就顺便想想。
谢谢各位,终于弄明白了。{:soso_e183:}{:soso_e182:}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2