美文网首页
C#中queue的用法

C#中queue的用法

作者: Charles陽 | 来源:发表于2018-10-29 22:41 被阅读0次

Queue队列就是先进先出。它并没有实现 IList,ICollection。所以它不能按索引访问元素,不能使用Add和Remove。下面是 Queue的一些方法和属性

Enqueue():在队列的末端添加元素

Dequeue():在队列的头部读取和删除一个元素,注意,这里读取元素的同时也删除了这个元素。如果队列中不再有任何元素。就抛出异常

Peek():在队列的头读取一个元素,但是不删除它

Count:返回队列中的元素个数

TrimExcess():重新设置队列的容量,因为调用Dequeue方法读取删除元素后不会重新设置队列的容量。

Contains():确定某个元素是否在队列中

CopyTo():把元素队列复制到一个已有的数组中

ToArray():返回一个包含元素的新数组

做一个小例子来说明下队列的用法:

首先建立一个实体类

[Serializable]
    public class Person:IEquatable<Person>
    {
        private string name;
        public string Name
        {
            get { return name; }
            set { name = value; }
        }

        private string phone;
        public string Phone
        {
            get { return phone; }
            set { phone = value; }
        }

        private bool? isGet;

        public bool? IsGet
        {
            get { return isGet; }
            set { isGet = value; }
        }

        public Person() { }

        public Person(string name, string phone,bool? isGet)
        {
            this.name = name;
            this.phone = phone;
            this.isGet = isGet;
        }

        public bool Equals(Person person)
        {
            if (person == null)
            {
                return false;
            }
            if (this.name == person.name && this.phone == person.phone)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }

然后建立一个queue的包装类

public class Manager
    {
        private Queue<Person> queue = new Queue<Person>();
        public void Add(Person p)
        {
            queue.Enqueue(p);
        }

        public Person Get()
        {
            return queue.Dequeue();
        }

        public bool IsGet(Person p)
        {
            bool resule = false;
            resule = queue.Contains(p);
            return resule;
        }

        public bool IsHaveElement()
        {
            if (queue.Count <= 0)
            {
                return false;
            }
            else
            {
                return true;
            }
        }

        public int GetQueueCount()
        {
            return queue.Count;
        }
    }

相关文章

网友评论

      本文标题:C#中queue的用法

      本文链接:https://www.haomeiwen.com/subject/yxzitqtx.html