コード例 #1
0
        public void Delete_HeadTail_02()
        {
            var hashq = new HashQueue <int>();

            Assert.AreEqual(0, hashq.Count());
            hashq.Enqueue(1);
            Assert.AreEqual(1, hashq.Peek());
            Assert.AreEqual(1, hashq.PeekTail());
            hashq.Delete(1);
            Assert.IsTrue(hashq.IsEmpty());
        }
コード例 #2
0
        public void Delete_ReEnqueue_03()
        {
            var hashq = new HashQueue <int>();

            Assert.AreEqual(0, hashq.Count());
            hashq.Enqueue(1);
            Assert.AreEqual(1, hashq.Count());
            hashq.Delete(1);
            Assert.AreEqual(0, hashq.Count());
            hashq.Enqueue(1);
            Assert.AreEqual(1, hashq.Count());
        }
コード例 #3
0
        public void Delete_Between_01()
        {
            var hashq = new HashQueue <int>();

            Assert.AreEqual(0, hashq.Count());
            hashq.Enqueue(1);
            hashq.Enqueue(2);
            hashq.Enqueue(3);
            Assert.AreEqual(1, hashq.Peek());
            Assert.AreEqual(3, hashq.PeekTail());
            hashq.Delete(2);
            Assert.AreEqual(1, hashq.Peek());
            Assert.AreEqual(3, hashq.PeekTail());
        }
コード例 #4
0
        public void Delete_DuplicateHashCode_04()
        {
            var person1 = new Person()
            {
                Name = "p1", Age = 1
            };
            var person2 = new Person()
            {
                Name = "p1", Age = 2
            };

            Assert.AreEqual(person1.GetHashCode(), person2.GetHashCode());
            Assert.AreNotEqual(person1, person2);
            var hashq = new HashQueue <Person>();

            Assert.AreEqual(0, hashq.Count());
            hashq.Enqueue(person1);
            hashq.Enqueue(person2);
            Assert.AreEqual(2, hashq.Count());
            Assert.IsTrue(hashq.Delete(person2));
            Assert.AreEqual(1, hashq.Count());
            Assert.AreSame(person1, hashq.Peek());
        }
コード例 #5
0
        public void Find01()
        {
            var count = 1000000;
            var sw    = new Stopwatch();

            var hashq = new HashQueue <int>();

            for (int i = 0; i < count; i++)
            {
                hashq.Enqueue(i);
            }
            sw.Start();
            Assert.IsTrue(hashq.Delete(count - 1));
            sw.Stop();
            var hashqTime = sw.ElapsedMilliseconds;

            Console.WriteLine($"hashqTime:  {hashqTime}");

            sw.Reset();
            var q = new Queue <int>();

            for (int i = 0; i < count; i++)
            {
                q.Enqueue(i);
            }
            sw.Start();
            // Queue<T>.Remove(x) and Where(x) are O(n).
            q.Where(x => x == count - 1).ToList();
            sw.Stop();
            var qTime = sw.ElapsedMilliseconds;

            Console.WriteLine($"qTime:      {qTime}");

            Assert.Less(hashqTime, qTime);
            Assert.Less(hashqTime, 10);
        }