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

© 黑马任雪刚 中级黑马   /  2012-5-24 16:58  /  1967 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

//需求:将一个集合中的元素取出存入另一个集合中并且消除重复项。

//问题:为什么我的程序运行出来的结果总是还有重复项:[jj, kk, jj, ll, oo, jj, kk, jj]。
import java.util.*;
public class stu
{
public static void main(String[] args)
{
  ArrayList a = new ArrayList();
  a.add("jj");
  a.add("kk");
  a.add("jj");
  a.add("ll");
  a.add("oo");
  a.add("jj");
  a.add("kk");
  a.add("jj");
  
  
  sop(method(a));
}
public static void sop(Object obj)
{
  System.out.println(obj);
}
public static List method(ArrayList a)
{
  ArrayList a1 = new ArrayList();
  Iterator it = a.iterator();
  while(it.hasNext())
  {
   if(!a1.contains(a))
   {
    a1.add(it.next());
      }
  }
  return a1;
}
}

5 个回复

倒序浏览
楼主要仔细学习啊,这个问题和ArrayList的概念有关。
先补一补基本概念吧,不然使用起来问题会很严重的
回复 使用道具 举报
可以用set来消除重复项
public Set method(List list){
                Set set = new TreeSet();
                set.addAll(list);
                System.out.println(set);
                return set;
        }
回复 使用道具 举报
楼主迭代的时候出了点错误!
Iterator it = a.iterator();
  while(it.hasNext())
  {
   if(!a1.contains(a))          // a1集合不可能包含a集合,所以每次都会执行添加动作。最后a1中的内容也就与a集合相同了。
   {
    a1.add(it.next());
      }
  }
  return a1;

修改代码:
Iterator it = a.iterator();
while (it.hasNext()) {
        String str=(String)it.next();       //获取每一次的迭代的元素,判断它是否在集合a1中。
        if(!a1.contains(str)){
                a1.add(str);
        }
}
               
        return a1;

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
import java.util.*;
public class Test2 {
        public static void main(String[] args) {
                ArrayList a = new ArrayList();
                   a.add("jj");
                   a.add("kk");
                   a.add("jj");
                   a.add("ll");
                   a.add("oo");
                   a.add("jj");
                   a.add("kk");
                   a.add("jj");
                   sop(a);
                   ArrayList list = new ArrayList();
                   HashSet hashsetObject=new HashSet(a);
                   Iterator iteratorObject=hashsetObject.iterator();
               while(iteratorObject.hasNext()){
                   String str=(String)iteratorObject.next();
                   list.add(str);
               }
               sop(list);
        }
        public static void sop(Object obj)
        {
          System.out.println(obj);
        }
}
打印结果:
[jj, kk, jj, ll, oo, jj, kk, jj]
[jj, kk, oo, ll]
回复 使用道具 举报
楼上OK的了,或者直接用set集合存吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马