有两个arraylist集合a1,a2。
a1中有{"a","b","c","d"};
a2中有{"a","c"};
问:怎样会把这两个集合中不相同的元素筛选出来,也就是"b","d".

解决方案 »

  1.   

    把大的那个ArrayList的元素按个在小的列表中用ArrayList.Contains()判断一下
    没有的话就记录下来,就行了 
      

  2.   

    因为两个列表中都有可能包含对方没有的数据。
    a1中有{"a","b","c","d"};
    a2中有{"a","c","f","g"};
    所以要交叉判断
      

  3.   

    如果是:
    a1中有{"a","b","c"};
    a2中有{"a","c","d"};
    结果是什么?
      

  4.   

    情况是这样的:
    a1中一定包含a2中有的数据,也就是说a2中不包括a1中没有的数据,问题是用a2.Contains(a1)
    这个方法,它的返回值是bool,怎么得到"b","d"呢?
      

  5.   

    这样就可以了            ArrayList a1 = new ArrayList();
                a1.Add("a");
                a1.Add("b");
                a1.Add("c");
                a1.Add("d");            ArrayList a2 = new ArrayList();
                a2.Add("a");
                a2.Add("c");            ArrayList a = new ArrayList();            for (Int32 i = 0; i < a1.Count; i++)
                {
                    if (!a2.Contains(a1[i]))
                        a.Add(a1[i]);
                }            foreach (String s in a)
                    Console.WriteLine(s);
      

  6.   


                ArrayList al1 = new ArrayList(new string[] { "a", "b", "c", "d" });
                ArrayList al2 = new ArrayList(new string[] { "a", "c" });            //全集
                ArrayList alAll = new ArrayList();            //结果
                ArrayList res = new ArrayList();            alAll.AddRange(al1);
                alAll.AddRange(al2);            res.AddRange(alAll);            foreach (string str in alAll)
                {
                    if (al1.Contains(str) && al2.Contains(str))
                        res.Remove(str);
                }            //打印
                foreach (string str in res)
                    Console.WriteLine(str);
      

  7.   

    List<string> list1 = new List<string> { "a", "b", "c", "d" };
                List<string> list2 = new List<string> { "a", "c" };
                List<string> intersectList = list1.Intersect(list2).ToList();
                List<string> unionList = list1.Union(list2).ToList();            List<string> needList = unionList.Except(intersectList).ToList();
      

  8.   

    ArrayList list1=new ArrayList(){"a","b","c","d"};
    ArrayList list2=new ArrayList(){"a","c"};
    List<string> list=list1.Cast<string>().Intersect(list2.Cast<string>());foreach(string str in list)
       Console.Write(str);