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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 咕咕猫 于 2013-9-11 22:21 编辑

练习:去除ArrayList集合中的重复元素
import java.util.*;
class ArrayListTest
{
        public static void main(String[]args)
        {
                ArrayList a1 = new ArrayList();
                a1.add("java01");
                a1.add("java01");
                a1.add("java02");
                a1.add("java04");
                a1.add("java02");
                a1.add("java03");
                a1 = SingleEment(a1);
        }
        
        public static ArrayList SingleEment(ArrayList a1)
        {
                //定义一个临时容器
                ArrayList newA1 = new ArrayList();
                Iterator it = a1.iterator();
        while (it.hasNext())
        {
        Object obj = it.next();//{:soso_e132:}进行此步骤的目的是什么呢,为了方便吗? 如果没有这一步下一行的代码可不可以写成if (!newA1.contains( it.next()))
                if (!newA1.contains(obj))
                newA1.add(obj);
        }
                return newA1;
        }
}

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

7 个回复

倒序浏览
本帖最后由 垂天云 于 2013-9-11 21:08 编辑

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

首先对集合中是否有元素进行判断,若存在元素就取出,作为Object类,while 语句特性是每一次都会做判断,元素会一直被取出,直到集合中没有元素为止。

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
Object obj = it.next();
if (!newA1.contains(obj))
这两行代码其实和下面这行的作用一样,不过分成两行写有助于提高代码的可读性
if (!newA1.contains( it.next()))
               

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
垂天云 发表于 2013-9-11 20:59
我觉得应该就是简化代码,把集合里的元素,都作为Object类取出。

那就是说只不过是定义一个Object对象来标识一下为了方便的吧
回复 使用道具 举报
咕咕猫 发表于 2013-9-11 21:02
那就是说只不过是定义一个Object对象来标识一下为了方便的吧

我觉得是这样的,代码更易读易懂些。
回复 使用道具 举报
Object obj = it.next();//是因为后面对它的引用有2次的操作
if (!newA1.contains(obj))
     newA1.add(obj);
如果你直接用,if (!newA1.contains(it.next()))
                       newA1.add(it.next()));
这样2次拿到的元素就不是一个了,所以前面用obj来记录it.next()是有必要的

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报 2 0
xiaoxu 发表于 2013-9-11 21:26
Object obj = it.next();//是因为后面对它的引用有2次的操作
if (!newA1.contains(obj))
     newA1.add(o ...

就是应该这么想,他和随机一样,不能2次或以上使用。
回复 使用道具 举报
xiaoxu 发表于 2013-9-11 21:26
Object obj = it.next();//是因为后面对它的引用有2次的操作
if (!newA1.contains(obj))
     newA1.add(o ...

噢噢噢 对的呀 相当于是又往下取了一个值了 对吧 这样做确保两个值是同一个值 谢谢啦
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马