《随笔三十二》——C#中的 “ 解析 泛型 “ Queue<T> 类 ” 中的方法和属性”

本文介绍了C#中的`Queue<T>`类,包括其构造函数、属性和方法,如`Count`、`Clear`、`Contains`、`Dequeue`、`Enqueue`、`Peek`、`ToArray`和`TrimExcess`。`Queue<T>`实现了先进先出(FIFO)的原则,详细阐述了各个方法的复杂度和行为。
摘要由CSDN通过智能技术生成

目录

Queue Constructors

Property

Queue.Count

Methods

Queue.Clear

Queue.Contains

Queue.Dequeue 

Queue.Enqueue

Queue.Peek

Queue.ToArray

Queue.TrimExcess 


点击这里进入官网了解更多详情

该类在 System.Collections.Generic 命名空间。

Queue<T> 类 中的元素都是 先进先出的。


Queue<T> Constructors


       static void Main(string[] args)
        {
            string[] temp = { "huang", "cheng", "tao" };     
           var numbers = new Queue<string>(); // 使用默认构造函数初始化,该实例为空并且具有默认初始容量。  
             // 该实例包含从指定集合复制的元素并且具有足够的容量来容纳所复制的元素。
            var queueCopy = new Queue<string>(temp);        
            var queueCopy2 = new Queue<string>(new string[] { "sda","da" });
            var dinosaurs = new Queue<string>(10); //该实例为空并且具有指定的初始容量。
        }

Property


Queue<T>.Count

public int Count { get; }
  • 获取 Queue<T> 中所有的元素数。
  • 此操作的复杂度为 O(1)。

Methods


Queue<T>.Clear

public void Clear ();
  • 从 Queue<T> 中移除所有对象。
  • 此方法为 O (n) 操作,其中 Count

Queue<T>.Contains

public bool Contains (T item);
  • 确定 item 元素 是否在 Queue<T> 中。 对于引用类型,该值可以为 null。如果在 Queue<T> 中找到item,则返回true; 否则,false。
  • 此方法执行线性搜索;因此,此方法为 O (n) 操作,其中nCount
        static void Main(string[] args)
        {
            Queue<string> numbers = new Queue<string>();
            numbers.Enqueue("one");
            numbers.Enqueue("two");
            numbers.Enqueue("three");
            numbers.Enqueue("four");
            numbers.Enqueue("five");
            if(numbers.Contains("one"))
            {
                WriteLine("在numbers 中!");
            }
            else
                WriteLine("不在numbers 中!");
        }

Queue<T>.Dequeue 

public T Dequeue ();
  • 把 Queue<T> 队首的元素删除。
  • 如果 Queue<T> 为空。 抛出 InvalidOperationException
  • 此方法类似于 Peek  方法,但 Peek  不会修改 Queue <T>。
  • 如果类型T是引用类型,则可以将null作为值添加到Queue <T>。
  • 此方法为 o (1) 运算。

Queue<T>.Enqueue

public void Enqueue (T item);
  • 将对象添加到 Queue<T> 的结尾处。对于引用类型,该值可以为 null
  • 如果 Count 已经等于当前容量,则通过自动重新分配内部数组来增加Queue <T>的容量,并在添加新元素之前将现有元素复制到新数组。
  • 如果 Count 小于当前 Capacity,则此方法为O(1)操作。 如果需要增加容量以容纳新元素,则此方法变为O(n)操作,其中n为Count 。

Queue<T>.Peek

public T Peek ();
  • 返回位于 Queue<T> 队头元素,但不将其移除。
  • 如果 Queue<T> 为空。抛出 InvalidOperationException
  • 此方法类似于 Dequeue 方法,但 Peek 不修改 Queue<T>
  • 如果类型T是引用类型,则可以将 null 作为值添加到Queue <T>。
  • 此方法为 o (1) 运算。

Queue<T>.ToArray

public T[] ToArray ();
  • 将 Queue<T> 中的元素 拷贝到 一个 T 类型的数组中去。
  • 该操作是使用 Array.Copy  复制元素,这是一个O(n)操作,其中 n 是 Count 
  • Queue<T>  中的元素未被修改。 新数组中元素的顺序与从Queue <T>开头到结尾的元素顺序相同。
  • 此方法为 O (n) 操作,其中nCount
      static void Main(string[] args)
        {
            string[] input = { "Brachiosaurus", "Amargasaurus", "Mamenchisaurus" };
           var  dinosaurs = new Queue<string>(input);
            string[] temp = dinosaurs.ToArray();
            foreach (var tt in temp)
            {
                WriteLine(tt);
            }
        }

Queue<T>.TrimExcess 

public void TrimExcess ();
  • 如果不准备向Queue<T> 中添加元素,那么可以使用TrimExcess() 退回 Queue<T> 中不需要的容量。这样可以表示退回给系统不需要的容量。 但是, 因为重新定位需要时间,所以如果元素个数超过了容量的90%, TrimExcesso() 方法就什么也不做。
  • 该方法的功能是 将容量设置为 Queue<T> 中的实际元素数目
  • 此方法为 O (n) 操作,其中 Count
  • 如果要将 Queue<T> 重置为其初始状态,请在调用 TrimExcess 方法之前调用 Clear 方法。

End.....

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值