小弟刚学,如何判断两个集合间的关系呢(包含,等于,不等于),集合用数组表示,望高手指教

解决方案 »

  1.   

    说的是,得考虑清楚,例如A和B
    我要的结果是有两条 1  A是否等于B,  2  A是否是B的真子集,或者B是否是A的真子集    不考虑集合中元素的顺序。
      

  2.   

    我想你是想从元素个数,内容方面来判断
    这样了 重构"="吧
    在里面做两个数组的count和foreach比较(这个要先对数组排序,否则你怎么比较?)
      

  3.   


    class UTest
    {
        static void Main()
        {
            int[] set1 = { 1, 3, 5, 7, 9 };
            int[] set2 = { 1, 7 };        bool equal = SetHelper<int>.SetEquals(set1, set2);        //false
            bool contain2 = SetHelper<int>.SetContains(set1, set2);   //true;
            bool contain1 = SetHelper<int>.SetContains(set2, set1);   //false;
        }
    }
    public class SetHelper<T>
    {
        public static bool SetContains( ICollection<T> set1, ICollection<T> set2)
        {
            if (set1 != null & set1 != null & set1.Count > set2.Count)
            {
                foreach (T element in set2)
                {
                    if (!set1.Contains(element)) return false;
                }
                return true;
            }
            return false;
        }    public static bool SetEquals(ICollection<T> set1, ICollection<T> set2)
        {
            return SetContains(set1, set2) && SetContains(set2, set1);
        }
    }
      

  4.   

    Correction to my previous post:if (set1 != null & set1 != null & set1.Count >= set2.Count)
    {
      ...
      

  5.   

    Correction again :)if (set1 != null && set1 != null && set1.Count >= set2.Count) 

      ...