A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 龚振 龚振 龚振 中级黑马   /  2012-4-13 21:55  /  1504 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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, 下载次数: 32)

QQ截图20120412211704.jpg

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

4 个回复

倒序浏览
  怎么想到把这个放到外面去了?   
   next()是去除集合中的元素,  放到外面只取了一个,while循环就成无线循环了  因为集合里面永远都是 sizi() - 1  个元素了
回复 使用道具 举报
while循环变成了死循环
回复 使用道具 举报
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。 一直都是真。
回复 使用道具 举报
不小心写出去了,后来不动了就顺便想想。
谢谢各位,终于弄明白了。{:soso_e183:}{:soso_e182:}

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马