
C# Intermediate – Queue, Stack, and Hashtable
C# Intermediate – Queue, Stack, and Hashtable 관련

In this article, we are going to talk about the queue, stack, and hashtable collections in C#, how to use them and how to use the methods they provide.
This article is part of the series
If you want to see the complete navigation of this tutorial, you can do that here C# Intermediate Tutorial.
Info
To download the source code, you can visit Collections in C# Source Code (CodeMazeBlog/csharp-intermediate-module
).
So, let’s start.
Queue Collection
The queue
collection represents a first-in, first-out collection of objects. This means that we can place our objects in a queue collection in a certain order and remove those objects in the same order. So, the first object which goes in is the first object to go out.
To create an object instance of a queue
collection we can use two different statements.
By using System.Collection.Generic
namespace:
Queue<int> intCollection = new Queue<int>();
And by using System.Collection
namespace:
Queue queueCollection = new Queue();
If we declare an object by providing a type (in our example an int), we can store only integer numbers inside. On the other hand, if we use the second example we can store different data types in a collection because it stores objects.
The Most Common Methods and Properties
The Enqueue
method adds an element inside a collection:
Queue queueCollection = new Queue();
queueCollection.Enqueue(54);
queueCollection.Enqueue("John");
queueCollection.Enqueue(54.10);
foreach (var item in queueCollection)
{
Console.WriteLine(item);
}
When we want to remove an element at the beginning of the collection and return it, we are going to use the Dequeue
method:
Queue queueCollection1 = new Queue();
queueCollection1.Enqueue(54);
queueCollection1.Enqueue("John");
queueCollection1.Enqueue(54.10);
int number = Convert.ToInt32(queueCollection1.Dequeue());
Console.WriteLine($"Removed element is: {number}");
Console.WriteLine();
foreach (var item in queueCollection1)
{
Console.WriteLine(item);
}
The Peek
method returns the element at the beginning of the collection but does not remove it:
Queue queueCollection2 = new Queue();
queueCollection2.Enqueue(54);
queueCollection2.Enqueue("John");
queueCollection2.Enqueue(54.10);
int peekNumber = Convert.ToInt32(queueCollection2.Peek());
Console.WriteLine($"Returned element is: {number}");
Console.WriteLine();
foreach (var item in queueCollection2)
{
Console.WriteLine(item);
}
The Clear
method removes all the elements from a collection.
If we want to check how many elements we have inside a collection, we can use the Count
property:
queueCollection2.Clear();
Console.WriteLine(queueCollection2.Count);
Stack Collection
A stack
collection represents a simple last-in, first-out collection. It means that an element that enters first in a collection will exit last.
As with a Queue
collection, we can use the System.Collection
and System.Collection.Generic
namespaces:
Stack stack = new Stack();
Stack<int> stackInt = new Stack<int>();
Related Methods and Properties
The Push
method inserts an object at the top of the collection:
Stack stack1 = new Stack();
stack1.Push(328);
stack1.Push("Fifty Five");
stack1.Push(124.87);
foreach (var item in stackCollection1)
{
Console.WriteLine(item);
}
Pop
removes the element which was included last in a collection and returns it:
Stack stackCollection2 = new Stack();
stackCollection2.Push(328);
stackCollection2.Push("Fifty Five");
stackCollection2.Push(124.87);
double number = Convert.ToDouble(stackCollection2.Pop());
Console.WriteLine($"Element removed from a collection is: {number}");
foreach (var item in stackCollection2)
{
Console.WriteLine(item);
}
Peek
returns an object ready to exit the collection, but it doesn’t remove it:
Stack stackCollection3 = new Stack();
stackCollection3.Push(328);
stackCollection3.Push("Fifty Five");
stackCollection3.Push(124.87);
double number1 = Convert.ToDouble(stackCollection3.Peek());
Console.WriteLine($"Element returned from a collection is: {number}");
foreach (var item in stackCollection3)
{
Console.WriteLine(item);
}
To remove all objects from a collection, we use the Clear
method.
If we want to count the number of elements, we use the Count
property:
stackCollection3.Clear();
Console.WriteLine(stackCollection3.Count);
Hashtable
The Hashtable represents a collection of a key-value pair that is organized based on the hash code of the key. Differently, from the queue and stack collections, we can instantiate a hashtable object by using the only System.Collections
namespace:
Hashtable hashTable = new Hashtable();
A Hashtable’s constructor has fifteen overloaded constructors.
Common Methods In The Hashtable Collection
The Add
method adds an element with the specified key and value into the collection:
Hashtable hashTable = new Hashtable();
hashTable.Add(Element.First, 174);
hashTable.Add(Element.Second, "Sixty");
hashTable.Add(Element.Third, 124.24);
foreach (var key in hashTable.Keys)
{
Console.WriteLine($"Key: {key}, value: {hashTable[key]}");
}
The Remove
method removes the element with the specified key from a collection:
Hashtable hashTable1 = new Hashtable();
hashTable1.Add(Element.First, 174);
hashTable1.Add(Element.Second, "Sixty");
hashTable1.Add(Element.Third, 124.24);
hashTable1.Remove(Element.Second);
foreach (var key in hashTable1.Keys)
{
Console.WriteLine($"Key: {key}, value: {hashTable[key]}");
}
ContainsKey
determines whether a collection contains a specific key:
if (hashTable.ContainsKey(Element.Second))
{
Console.WriteLine($"Collection contains key: {Element.Second} and its value is {hashTable[Element.Second]}");
}
The ContainsValue
method determines whether a collection contains a specific value.
Clear
removes all elements from a collection:
hashTable.Clear();
Common Properties in the Hashtable Collection
Count
property counts the number of elements inside a collection:
Console.WriteLine(hashTable.Count);
Keys
property returns all the keys from a collection and the Value
property returns all the values from a collection:
Hashtable hashTable2 = new Hashtable();
hashTable2.Add(Element.First, 174);
hashTable2.Add(Element.Second, "Sixty");
hashTable2.Add(Element.Third, 124.24);
var keys = hashTable2.Keys;
foreach (var key in keys)
{
Console.WriteLine(key);
}
Console.WriteLine();
var values = hashTable2.Values;
foreach (var value in values)
{
Console.WriteLine(value);
}
Conclusion
In this article, we have learned:
- To use the Queue collection with its methods
- To use the Stack collection with its methods
- How to use Hashtable collection with its methods
In the next article, we are going to talk about List and Dictionary in C#.
