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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郭振 中级黑马   /  2012-5-4 18:27  /  2030 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 郭振 于 2012-5-4 18:54 编辑

     用下边的代码做所得到的结果和用红字做结果不一样,我不知道为什么,希望大家能给与我指点,谢了。  
     package fuxi;
import java.util.ArrayList;
import java.util.Iterator;
public class myarraylist {
/**
  * @param args
  */   
public static void main(String[] args) {
                // TODO Auto-generated method stub
                ArrayList al=new ArrayList();
                al.add("java01");
                al.add("java02");
                al.add("java01");
                al.add("java03");
                al.add("java01");
                al.add("java02");
                al.add("java01");
                al.add("java03");
      
                System.out.println(my(al));

        }
        
        public static ArrayList my(ArrayList al)
        {
                ArrayList newal=new ArrayList();
                Iterator it=al.iterator();

                              while(it.hasNext())   
                {                                                             //用Object obj=it.next();

                        if(!newal.contains(it.next())           //if(!newal.contains(obj)用有结果
                                newal.add(it.next());             //  newal.add(obj);
                }
                return newal;
        }

}

6 个回复

倒序浏览
if(!newal.contains(it.next())
                                newal.add(it.next);
这里3个错误
改为
if(!newal.contains(it.next()))
                                newal.add(it.next());
回复 使用道具 举报
        public static ArrayList my(ArrayList al)
        {
                ArrayList newal=new ArrayList();
                Iterator it=al.iterator();
                while(it.hasNext())
                {
                        if(!newal.contains(it.next()))
                                newal.add(it.next());
                }
                return newal;
        }

漏写了两个括号,还有感叹号是中文输入法的

回复 使用道具 举报
我问的不是()这个问题啊!
回复 使用道具 举报
问题又改了吗,刚刚不是让检查拼写错误的。。

如果没有Object obj = it.next();则循环一次,要执行两次next();所以是错误的

顺便写一个加泛型的完整代码
  1. import java.util.*;

  2. class Test
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 ArrayList<String> al = new ArrayList<String>();

  7.                 al.add("java01");
  8.                 al.add("java02");
  9.                 al.add("java01");
  10.                 al.add("java03");
  11.                 al.add("java01");
  12.                 al.add("java02");
  13.                 al.add("java01");
  14.                 al.add("java03");

  15.                 al = signalElement(al);

  16.                 System.out.println(al);
  17.         }

  18.         public static ArrayList<String> signalElement(ArrayList<String> al)
  19.         {
  20.                 ArrayList<String> newAl = new ArrayList<String>();

  21.                 Iterator<String> it = al.iterator();

  22.                 while(it.hasNext())
  23.                 {
  24.                         String s = it.next();

  25.                         if(!newAl.contains(s))
  26.                                 newAl.add(s);
  27.                 }
  28.                 return newAl;
  29.         }
  30. }
复制代码
回复 使用道具 举报
哦,是这么回事啊,谢了
回复 使用道具 举报
1  首先你要知道集合放的是对象 所以你放什么对象进去取出来的时候也要把它转换成什么样的对象
我自己实现的方式如下 :
public class Test
{
        public static void main(String[] args)
        {
        
        ArrayList al=new ArrayList();
        al.add("java01");
        al.add("java02");
        al.add("java01");
        al.add("java03");
        al.add("java01");
        al.add("java02");
        al.add("java01");
        al.add("java03");

        System.out.println(my(al));

    }

public static ArrayList my(ArrayList al)
{
        ArrayList newal=new ArrayList();
        Iterator it=al.iterator();

        for(Iterator iter = al.iterator();iter.hasNext();)
        {
                String str = (String) iter.next();
                if (!newal.contains(str))
                {
                        newal.add(str);
                }
        }
        return newal;
}

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