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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© falonsokaka914 中级黑马   /  2014-10-22 19:28  /  1688 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

        public static void main(String[] args) {
                       
                        /*
                         * 定义一个功能,去除ArrayList中的重复元素
                         *
                         * 思路:
                         * 1.定义一个容器,用于存储唯一性的元素
                         * 2.迭代已有的元素,将每一个迭代到的元素都到新容器中去判断是否包含
                         * 如果包含不存,不包含就存
                         * 3.迭代结束,新容器中存储的都是不重复的元素
                         */
                        ArrayList  list = new ArrayList();
                        list.add("abc1");
                        list.add("abc2");
                        list.add("abc1");
                        list.add("abc2");
                        list.add("abc1");

                        System.out.println(list);
                       
                        list = tokyoList(list);
                        System.out.println(list);
        }

        public  static ArrayList tokyoList(ArrayList list) {
                       
                        //创建一个新容器
                        ArrayList  temp = new ArrayList();
                        //迭代原容器
                        for(Iterator it = list.iterator(); it.hasNext();){
                                //判断temp中是否有重复的元素
                               
                                        if(! temp.contains(it.next())){
                                                //没有重复的就存
                                                temp.add(it.next());
                                        }
                        }
                        //返回没有重复元素的新容器
                return temp;
        }

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1 淡定

查看全部评分

7 个回复

倒序浏览
各位大神帮帮我, 我这个哪里错了,求指点:)
回复 使用道具 举报
一次循环 it.next() 执行了两次,比较的和往新容器中添加的不是一个元素

你要定义一个变量来存储迭代的元素,在利用这个引用来操作
String str = it.next();
if(!temp.contains(str)){
    temp.add(str);
}

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
Huberry 发表于 2014-10-22 19:39
一次循环 it.next() 执行了两次,比较的和往新容器中添加的不是一个元素

你要定义一个变量来存储迭代的元 ...

恩, 谢谢你的指点, 我在按照你的方法去试试
回复 使用道具 举报
楼上的楼上说的对
回复 使用道具 举报
来学习学习
回复 使用道具 举报
Huberry正解呀。楼主想法很好,有效的避免了ArrayList自动改变size()带来的低效问题。
回复 使用道具 举报
  1.   if(! temp.contains(it.next())){
  2.                                                  //没有重复的就存
  3.                                                 temp.add(it.next());
  4.                                          }
复制代码

你contains的next元素和你add的next元素不是一个哦。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马