队列代表一个first-in,先出对象集合。当您需要first-in、first-out访问项目时使用它。当您在列表中添加一个项目时,称为入队,当您删除一个项目时,称为出队。此类位于 System.Collections 命名空间下,并实现 ICollection、IEnumerable 和 ICloneable 接口。
队列类的特点:
- 入队将一个元素添加到队列末尾。
- 出队从队列开头删除最旧的元素。
- 窥视返回位于队列开头的最旧元素,但不会将其从队列中删除。
- 容量队列的数量是队列可以容纳的元素的数量。
- 当元素添加到队列时,通过重新分配内部数组,容量会根据需要自动增加。
- 队列接受空值作为引用类型的有效值并允许重复元素。
Constructors
构造函数 | 说明 |
---|---|
Queue() | 初始化 Queue 类的一个新实例,该实例为空、具有默认初始容量并使用默认增长因子。 |
Queue(ICollection) | 初始化 Queue 类的新实例,该实例包含从指定集合复制的元素,具有与复制的元素数量相同的初始容量,并使用默认增长因子。 |
队列(Int32) | 初始化 Queue 类的新实例,该实例为空、具有指定的初始容量并使用默认增长因子。 |
队列(Int32,单) | 初始化 Queue 类的新实例,该实例为空、具有指定的初始容量并使用指定的增长因子。 |
例子:
// C# code to create a Queue
using System;
using System.Collections;
class GFG {
// Driver code
public static void Main()
{
// Creating a Queue
Queue myQueue = new Queue();
// Inserting the elements into the Queue
myQueue.Enqueue("one");
// Displaying the count of elements
// contained in the Queue
Console.Write("Total number of elements in the Queue are : ");
Console.WriteLine(myQueue.Count);
myQueue.Enqueue("two");
// Displaying the count of elements
// contained in the Queue
Console.Write("Total number of elements in the Queue are : ");
Console.WriteLine(myQueue.Count);
myQueue.Enqueue("three");
// Displaying the count of elements
// contained in the Queue
Console.Write("Total number of elements in the Queue are : ");
Console.WriteLine(myQueue.Count);
myQueue.Enqueue("four");
// Displaying the count of elements
// contained in the Queue
Console.Write("Total number of elements in the Queue are : ");
Console.WriteLine(myQueue.Count);
myQueue.Enqueue("five");
// Displaying the count of elements
// contained in the Queue
Console.Write("Total number of elements in the Queue are : ");
Console.WriteLine(myQueue.Count);
myQueue.Enqueue("six");
// Displaying the count of elements
// contained in the Queue
Console.Write("Total number of elements in the Queue are : ");
Console.WriteLine(myQueue.Count);
}
}
输出:
Total number of elements in the Queue are : 1 Total number of elements in the Queue are : 2 Total number of elements in the Queue are : 3 Total number of elements in the Queue are : 4 Total number of elements in the Queue are : 5 Total number of elements in the Queue are : 6
Properties
属性 | 说明 |
---|---|
Queue.Count | 获取 Queue 中包含的元素数量。 |
Queue.IsSynchronized | 获取一个值,该值指示对 Queue 的访问是否同步(线程安全)。 |
SyncRoot | 获取可用于同步对队列的访问的对象。 |
例子:
// C# code to Get the number of
// elements contained in the Queue
using System;
using System.Collections;
class GFG {
// Driver code
public static void Main()
{
// Creating a Queue
Queue myQueue = new Queue();
// Inserting the elements into the Queue
myQueue.Enqueue("Chandigarh");
myQueue.Enqueue("Delhi");
myQueue.Enqueue("Noida");
myQueue.Enqueue("Himachal");
myQueue.Enqueue("Punjab");
myQueue.Enqueue("Jammu");
// Displaying the count of elements
// contained in the Queue
Console.Write("Total number of elements in the Queue are : ");
Console.WriteLine(myQueue.Count);
}
}
输出:
Total number of elements in the Queue are : 6
Methods
方法 | 说明 |
---|---|
Queue.Clear | 从队列中删除所有对象。 |
Queue.Clone() | 创建队列的浅拷贝。 |
Queue.Contains() | 确定元素是否在队列中。 |
Queue.CopyTo() | 从指定的数组索引开始,将队列元素复制到现有的一维数组。 |
Queue.Dequeue | 删除并返回队列开头的对象。 |
Queue.Enqueue() | 将一个对象添加到队列末尾。 |
Queue.Equals() | 确定指定对象是否等于当前对象。 |
Queue.GetEnumerator | 返回一个遍历队列的枚举器。 |
GetHashCode() | 用作默认的哈希函数。 |
GetType() | 获取当前实例的类型。 |
MemberwiseClone() | 创建当前对象的浅拷贝。 |
Queue.Peek | 返回队列开头的对象而不删除它。 |
Queue.Synchronized() | 返回一个包装原始队列的新队列,并且是线程安全的。 |
Queue.ToArray | 将队列元素复制到新数组。 |
ToString() | 返回表示当前对象的字符串。 |
TrimToSize() | 将容量设置为队列中元素的实际数量。 |
示例 1:
// C# code to Check if a Queue
// contains an element
using System;
using System.Collections;
class GFG {
// Driver code
public static void Main()
{
// Creating a Queue
Queue myQueue = new Queue();
// Inserting the elements into the Queue
myQueue.Enqueue(5);
myQueue.Enqueue(10);
myQueue.Enqueue(15);
myQueue.Enqueue(20);
myQueue.Enqueue(25);
// Checking whether the element is
// present in the Queue or not
// The function returns True if the
// element is present in the Queue, else
// returns False
Console.WriteLine(myQueue.Contains(7));
}
}
输出:
False
示例 2:
// C# code to Convert Queue to array
using System;
using System.Collections;
class GFG {
// Driver code
public static void Main()
{
// Creating a Queue
Queue myQueue = new Queue();
// Inserting the elements into the Queue
myQueue.Enqueue("Geeks");
myQueue.Enqueue("Geeks Classes");
myQueue.Enqueue("Noida");
myQueue.Enqueue("Data Structures");
myQueue.Enqueue("GeeksforGeeks");
// Converting the Queue
// into object array
Object[] arr = myQueue.ToArray();
// Displaying the elements in array
foreach(Object obj in arr)
{
Console.WriteLine(obj);
}
}
}
输出:
Geeks Geeks Classes Noida Data Structures GeeksforGeeks
参考:
相关用法
- C# Queue.GetEnumerator()用法及代码示例
- C# Queue.Clear()用法及代码示例
- C# Queue.Dequeue()用法及代码示例
- C# Queue.Peek()用法及代码示例
- C# Queue.Clear用法及代码示例
- C# Queue.Clone()用法及代码示例
- C# Queue.Contains()用法及代码示例
- C# Queue.CopyTo()用法及代码示例
- C# Queue.Dequeue用法及代码示例
- C# Queue.Enqueue()用法及代码示例
- C# Queue.Equals()用法及代码示例
- C# Queue.GetEnumerator用法及代码示例
- C# Queue.Peek用法及代码示例
- C# Queue.Synchronized()用法及代码示例
- C# Queue.ToArray用法及代码示例
- C# Queue.Count用法及代码示例
- C# Queue.IsSynchronized用法及代码示例
- C# Queue转array用法及代码示例
- C# String Clone()用法及代码示例
- C# String Compare()用法及代码示例
- C# String CompareOrdinal()用法及代码示例
- C# String CompareTo()用法及代码示例
- C# String Concat()用法及代码示例
- C# String Contains()用法及代码示例
- C# String Copy()用法及代码示例
注:本文由纯净天空筛选整理自Sahil_Bansall大神的英文原创作品 C# | Queue Class。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。