예제 #1
0
        public static void Main()
        {
            List<int> itemsToAdd = new List<int> { 17, 9, 9, 12, 19, 6, 25, 10, 15 };  

            var set = new OrderedSet<int>();

            Console.WriteLine("Adding elements: {0}", string.Join(", ", itemsToAdd));
            foreach (var item in itemsToAdd)
            {
                var added = set.Add(item);
                //// duplicate items shouldn't be added twice in the set like item 9
                Console.WriteLine("Item {0}\t: {1}", item, added ? "added" : "not added"); 
            }

            Console.WriteLine("{0}\nUsing IEnumerable foreach:", Separator);
            foreach (var element in set)
            {
                Console.WriteLine(element);
            }
            
            Console.WriteLine("{0}\nCount: {1}", Separator, set.Count);
            Console.WriteLine("{0}\nMin: {1}", Separator, set.Min);
            Console.WriteLine("{0}\nMax: {1}", Separator, set.Max);
            Console.WriteLine("{0}\nContains {1}: {2}", Separator, ContainedValue, set.Contains(ContainedValue));
            Console.WriteLine("{0}\nContains {1}: {2}", Separator, NotContainedValue, set.Contains(NotContainedValue));

            Console.WriteLine("{0}\nUsing ForEach method:", Separator);
            set.ForEach(Console.WriteLine);
            
            Console.WriteLine("{0}\nEfter removing 19:", Separator);
            set.Remove(19);
            set.ForEach(Console.WriteLine);
            Console.WriteLine("Count: {0}", set.Count);

            Console.WriteLine("{0}\nEfter removing all items:", Separator);
            set.Remove(6);
            set.Remove(9);
            set.Remove(15);
            set.Remove(25);
            set.Remove(10);
            set.Remove(12);
            set.Remove(17);
            Console.WriteLine("Count: {0}", set.Count);
            set.ForEach(Console.WriteLine); // Shouldn't print items because the set is empty
        }
예제 #2
0
        /// <summary>
        /// OrderedSet<T>
        /// A set based on balanced search tree (red-black) (NO DUPLICATES)
        /// Add / Find / Remove work in time O(log(N))
        /// Like .NET’s SortedSet<T>
        /// Provides fast .Range(from, to) operation
        /// </summary>
        private static void TestOrderedSet()
        {
            OrderedSet <Student> students = new OrderedSet <Student>();
            var student1 = new Student("Pesho", 21);
            var student2 = new Student("Pesho", 21);

            students.Add(student1);
            students.Add(student2);
            Console.WriteLine("Equals: " + student1.Equals(student2));
            Console.WriteLine("CompareTo: " + student1.CompareTo(student2));
            Console.WriteLine(student1.GetHashCode());
            Console.WriteLine(student2.GetHashCode());
            students.Add(student1);
            var student3 = new Student("Pesho", 22);
            var student4 = new Student("Pesho", 23);
            var student5 = new Student("Pesho", 24);

            students.Add(student3);
            students.Add(student4);
            students.Add(student5);
            foreach (var item in students)
            {
                Console.WriteLine(item);
            }

            Console.WriteLine("========== Range Age >= 22 && <= 23 ============= ");
            var rangeBag = students.Range(student3, true, student4, true);

            foreach (var item in rangeBag)
            {
                Console.WriteLine(item);
            }

            Console.WriteLine("==========ForEach(x => { x.Age += 1; Console.WriteLine(x); })============= ");
            students.ForEach(x => { x.Age += 1; Console.WriteLine(x); });
        }
예제 #3
0
        /// <summary>
        /// OrderedSet<T>
        /// A set based on balanced search tree (red-black) (NO DUPLICATES)
        /// Add / Find / Remove work in time O(log(N))
        /// Like .NET’s SortedSet<T>
        /// Provides fast .Range(from, to) operation
        /// </summary>
        private static void TestOrderedSet()
        {
            OrderedSet<Student> students = new OrderedSet<Student>();
            var student1 = new Student("Pesho", 21);
            var student2 = new Student("Pesho", 21);
            students.Add(student1);
            students.Add(student2);
            Console.WriteLine("Equals: " + student1.Equals(student2));
            Console.WriteLine("CompareTo: " + student1.CompareTo(student2));
            Console.WriteLine(student1.GetHashCode());
            Console.WriteLine(student2.GetHashCode());
            students.Add(student1);
            var student3 = new Student("Pesho", 22);
            var student4 = new Student("Pesho", 23);
            var student5 = new Student("Pesho", 24);
            students.Add(student3);
            students.Add(student4);
            students.Add(student5);
            foreach (var item in students)
            {
                Console.WriteLine(item);
            }

            Console.WriteLine("========== Range Age >= 22 && <= 23 ============= ");
            var rangeBag = students.Range(student3, true, student4, true);
            foreach (var item in rangeBag)
            {
                Console.WriteLine(item);
            }

            Console.WriteLine("==========ForEach(x => { x.Age += 1; Console.WriteLine(x); })============= ");
            students.ForEach(x => { x.Age += 1; Console.WriteLine(x); });
        }