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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wrnlksblk 中级黑马   /  2015-7-24 19:46  /  403 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public static ArrayList singleElements(ArrayList al)
        {
               
                ArrayList newAl = new ArrayList();
                for(Iterator it = al.iterator();it.hasNext();)
                {
                        Object obj = it.next();               
                        while(!newAl.contains(obj))
                        {
                                newAl.add(obj);
                        }
                }
                return newAl;
               
        }
为什么改成这样不行,就是不需要用Object,会报错找不到这个元素
public static ArrayList singleElements(ArrayList al)
        {
               
                ArrayList newAl = new ArrayList();
                for(Iterator it = al.iterator();it.hasNext();)
                {
                        while(!newAl.contains(it.next())
                        {
                                newAl.add(it.next());
                        }
                }
                return newAl;
               
        }

5 个回复

倒序浏览
毕老师的那个通过ArrayList删除重复元素那个
回复 使用道具 举报

毕老师的那个通过ArrayList删除重复元素那个
回复 使用道具 举报
本帖最后由 AllenIverson 于 2015-7-24 21:17 编辑

while(!newAl.contains(it.next()) //it.next()取元素的时候,指针会往后移动一个位置
{
          newAl.add(it.next());//因为
指针往后移动了一个位置,it.next()取的元素跟上面的已经不是同一个元素了,是后面的一个元素。
   }


Object obj = it.next();               
                        while(!newAl.contains(obj))//这里的obj和下面的obj同一个元素
                        {
                                newAl.add(obj);
                        }

回复 使用道具 举报
这个程序我就没看懂,怎么能在if语句的括号添加赋值赋值语句的吗?
回复 使用道具 举报
AllenIverson 发表于 2015-7-24 21:15
while(!newAl.contains(it.next()) //it.next()取元素的时候,指针会往后移动一个位置
{
          newAl ...

这是错误之一啊,但是我把这句newAl.add(it.next());添加的东西随便改成其他的,编译还是能通过,运行还是会报错,找不到,为什么??
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马