Click or drag to resize

FifoQueueT Class

Represents a first-in, first-out collection of objects.

Compared to the standard generic Queue, this queue allows access to queue elements throught the [P:Item(int)] property of the IList{T} interface. It implements the IList{T} interface, but does not support in-queue modifications, so methods like Remove and Insert throws NotSupportedException.

Inheritance Hierarchy
SystemObject
  DHI.Mike1D.Generic.CollectionsFifoQueueT

Namespace:  DHI.Mike1D.Generic.Collections
Assembly:  DHI.Mike1D.Generic (in DHI.Mike1D.Generic.dll) Version: 16.0.0.0 (11.1.1.1111)
Syntax
C#
public class FifoQueue<T> : IList<T>, 
	ICollection<T>, IEnumerable<T>, IEnumerable

Type Parameters

T

The FifoQueueT type exposes the following members.

Constructors
  NameDescription
Public methodFifoQueueT
Initializes a new instance of the FifoQueue{T} class that is empty and has the default initial capacity.
Top
Properties
  NameDescription
Public propertyArray
An array representation of the current content of the queue.
Public propertyCount
Gets the number of elements contained in the FifoQueue{T}.
Public propertyItem
Gets/sets the element at the specified position in the FifoQueue{T}.
Top
Methods
  NameDescription
Public methodClear
Removes all objects from the FifoQueue{T}.
Public methodContains
Public methodCopyTo
Public methodDequeue
Removes and returns the object at the beginning of the FifoQueue{T}.
Public methodEnqueue
Adds an object to the end of the FifoQueue{T}.
Public methodEquals
Determines whether the specified object is equal to the current object.
(Inherited from Object.)
Protected methodFinalize
Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object.)
Public methodGetEnumerator
Returns an enumerator that iterates through the FifoQueue{T}.
Public methodGetHashCode
Serves as a hash function for a particular type.
(Inherited from Object.)
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Public methodIndexOf
Protected methodMemberwiseClone
Creates a shallow copy of the current Object.
(Inherited from Object.)
Public methodPeek
Returns the object at the beginning of the FifoQueue{T} without removing it.
Public methodToString
Returns a string that represents the current object.
(Inherited from Object.)
Top
Extension Methods
  NameDescription
Public Extension MethodBinarySearchT(T)Overloaded.
Searches the entire sorted IListT for an element and returns the zero-based index of the element.

If the key is not found, a negative number is returned, which can be intepreted as the bitwise complement of the interval of indices that the key is in between, i.e.

list[interval-1] < key < list[interval]

(Defined by GenericExtensions.)
Public Extension MethodCode exampleBinarySearchT(FuncT, Int32)Overloaded.
Searches the entire sorted IListT for an element using the provided comparer and returns the zero-based index of the element.

This differs from the "ordinary" binary search in allowing a comparer delegate that defines whether an item is found (returning 0), whether the item in the list is before (<0) or after (>0) that knows how to compare a class with its key. Example, if the list contains classes of type T having an id number and the class is sorted on that id, then the keySelector returns the id number for that class.

Examples
If having a list of doubles, to find 4.5 in the list, use:
int index = list.BinarySearch(d => d.CompareTo(4.5))
(Defined by GenericExtensions.)
Public Extension MethodBinarySearchT(T, IComparerT)Overloaded.
Searches the entire sorted IListT for an element using the provided comparer and returns the zero-based index of the element.

If the key is not found, a negative number is returned, which can be intepreted as the bitwise complement of the interval of indices that the key is in between, i.e.

list[interval-1] < key < list[interval]

(Defined by GenericExtensions.)
Public Extension MethodBinarySearchT, TKey(FuncT, TKey, TKey)Overloaded.
Searches the entire sorted IListT for an element and returns the zero-based index of the element.

If the key is not found, a negative number is returned, which can be intepreted as the bitwise complement of the interval of indices that the key is in between, i.e.

list[interval-1] < key < list[interval]

This differs from the "ordinary" binary search in allowing a keySelectorcomparer that knows how to compare a class with its key. Example, if the list contains classes of type T having an id number and the class is sorted on that id, then the keySelector returns the id number for that class.

(Defined by GenericExtensions.)
Public Extension MethodBinarySearchT, TKey(FuncT, TKey, TKey, IComparerTKey)Overloaded.
Searches the entire sorted IListT for an element using the provided comparer and returns the zero-based index of the element.

If the key is not found, a negative number is returned, which can be intepreted as the bitwise complement of the interval of indices that the key is in between, i.e.

list[interval-1] < key < list[interval]

This differs from the "ordinary" binary search in allowing a keySelectorcomparer that knows how to compare a class with its key. Example, if the list contains classes of type T having an id number and the class is sorted on that id, then the keySelector returns the id number for that class.

(Defined by GenericExtensions.)
Public Extension MethodSortTOverloaded.
Sorts the elements in the entire List{T} using the default comparer.

A quick sort algorithm is used. Quick sort is a un-stable sort algorithm i.e. if two elements are equal their order may not be preserved.

If the provided IList is either an array or a list, the build in sorting method is used (also quick sort).

(Defined by GenericExtensions.)
Public Extension MethodSortT(IComparerT)Overloaded.
Sorts the elements in the entire List{T} using the provided comparer.

A quick sort algorithm is used. Quick sort is a un-stable sort algorithm i.e. if two elements are equal their order may not be preserved.

If the provided IList is either an array or a list, the build in sorting method is used (also quick sort).

(Defined by GenericExtensions.)
Public Extension MethodSortStableTOverloaded. (Defined by GenericExtensions.)
Public Extension MethodSortStableT(IComparerT)Overloaded.
Sorts the elements in the entire List{T} using the provided comparer.

A merge sort algorithm is used. merge sort is a stable sort algorithm i.e. if two elements are equal their order are preserved.

(Defined by GenericExtensions.)
Public Extension MethodSortStableT(ComparisonT)Overloaded.
Sorts the elements in the entire List{T} using the provided comparer.

A merge sort algorithm is used. merge sort is a stable sort algorithm i.e. if two elements are equal their order are preserved.

(Defined by GenericExtensions.)
Top
Remarks

This class implements a generic queue as a circular array. Objects stored in a FifoQueue{T} are inserted at one end and removed from the other.

The capacity of a FifoQueue{T} is the number of elements the FifoQueue{T} can hold. As elements are added to a FifoQueue{T}, the capacity is automatically increased as required by reallocating the internal array

FifoQueue{T} accepts null as a valid value for reference types and allows duplicate elements.

See Also