C# | Queue<T>.TrimExcess Method with Examples

Queue represents a first-in, first out collection of object. It is used when you need a first-in, first-out access to items. When you add an item in the list, it is called enqueue, and when you remove an item, it is called Dequeue.
Queue<T>.TrimExcess Method is used to set the capacity to the actual number of elements in the Queue<T>, if that number is less than 90 percent of current capacity.

A queue is an unbounded data structure and there is no method available to calculate the capacity of Queue in C#. It is dynamic and depends on the system memory. This method is generally used in memory management of the large queue.
Queue Properties:

  • Enqueue adds an element to the end of the Queue.
  • Dequeue removes the oldest element from the start of the Queue.
  • Peek returns the oldest element that is at the start of the Queue but does not remove it from the Queue.
  • The capacity of a Queue is the number of elements the Queue can hold.
  • As elements are added to a Queue, the capacity is automatically increased as required by reallocating the internal array.
  • Queue accepts null as a valid value for reference types and allows duplicate elements.

Syntax:

public void TrimExcess ();

Note:

  • This method can be used to minimize a collection’s memory overhead if no new elements will be added to the collection.
  • To reset a Queue<T> to its initial state, call the Clear method before calling the TrimExcess method.
  • Trimming an empty Queue<T> sets the capacity of the Queue<T> to the default capacity.

Below given is an example to understand the implementation in a better way:



Example:

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# code to set the capacity to the
// actual number of elements in the Queue
using System;
using System.Collections.Generic;
  
class GFG {
      
    // Driver code
    public static void Main()
    {
          
        // Creating a Queue of strings
        Queue<string> myQueue = new Queue<string>();
  
        // Inserting elements into Queue
        myQueue.Enqueue("1st");
        myQueue.Enqueue("2nd");
        myQueue.Enqueue("3rd");
        myQueue.Enqueue("4th");
        myQueue.Enqueue("5th");
  
        // To display number of elements in Queue
        Console.WriteLine(myQueue.Count);
          
        // Removing all the elements from Queue
        myQueue.Clear();
  
        // using TrimExcess method
        myQueue.TrimExcess();
  
        // To display number of elements in Queue
        Console.WriteLine(myQueue.Count);
    }
}

chevron_right


Output:

5
0

Reference:



My Personal Notes arrow_drop_up

In love with a semicolon because sometimes i miss it so badly)

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.