Exemple #1
0
        /// <summary>
        /// Объединение множеств
        /// </summary>
        /// <returns></returns>
        public HashTableSet <T> Union(HashTableSet <T> set)
        {
            int resSize             = Count + set.Count;
            HashTableSet <T> result = new HashTableSet <T>(resSize);

            for (int i = 0; i < Count; i++)
            {
                var list = items.GetItem(i);
                foreach (var item in list)
                {
                    result.Add(item);
                }
            }
            for (int i = 0; i < set.Count; i++)
            {
                var list = set.items.GetItem(i);
                foreach (var item in list)
                {
                    result.Add(item);
                }
            }
            return(result);
        }
Exemple #2
0
        /// <summary>
        /// Разность множеств
        /// </summary>
        /// <returns></returns>
        public HashTableSet <T> Difference(HashTableSet <T> set)
        {
            int resSize             = Count;
            HashTableSet <T> result = new HashTableSet <T>(resSize);

            for (int i = 0; i < Count; i++)
            {
                var list = items.GetItem(i);
                foreach (var item in list)
                {
                    if (!set.items.Search(item))
                    {
                        result.Add(item);
                    }
                }
            }
            return(result);
        }
Exemple #3
0
        /// <summary>
        /// Пересечение множеств
        /// </summary>
        /// <returns></returns>
        public HashTableSet <T> Intersection(HashTableSet <T> set)
        {
            int resSize             = (Count >= set.Count) ? Count : set.Count;
            HashTableSet <T> result = new HashTableSet <T>(resSize);

            for (int i = 0; i < Count; i++)
            {
                var list = items.GetItem(i);
                foreach (var item in list)
                {
                    if (set.items.Search(item))
                    {
                        result.Add(item);
                    }
                }
            }
            return(result);
        }