854
Part II: Exploring the C# Library
LinkedList<T> defines many methods. A sampling is shown in Table 25-16. In addition 
to the properties defined by the interfaces that it implements, LinkedList<T> defines these 
properties:
public LinkedListNode<T> First { get; }
public LinkedListNode<T> Last { get; }
First obtains the first node in the list. Last obtains the last node in the list.
Method
Description
public LinkedListNode<T>
AddAfter(LinkedListNode<T> node, T value)
Adds a node with the value value to the list immediately 
after the node specified by node. The node passed in node
must not be null. Returns a reference to the node containing 
the value value.
public void
AddAfter(LinkedListNode<T> node,
LinkedListNode<T> newNode)
Adds the node passed in newNode to the list immediately 
after the node specified by node. The node passed in 
node or newNode must not be null. Throws an 
InvalidOperationException if node is not in the 
list or if newNode is part of another list.
public LinkedListNode<T>
AddBefore(LinkedListNode<T> node, T value)
Adds a node with the value value to the list immediately 
before the node specified by node. The node passed in node
must not be null. Returns a reference to the node containing 
the value value.
public void
AddBefore(LinkedListNode<T> node,
LinkedListNode<T> newNode)
Adds the node passed in newNode to the list immediately 
beforethe node specified by node. The node passed in 
node or newNode must not be null. Throws an 
InvalidOperationException if node is not in the
list or if newNode is part of another list.
public LinkedList<T> AddFirst( T value)
Adds a node with the value value to the start of the list. 
Returns a reference to the node containing the value value.
public void AddFirst(LinkedListNode<T> node)
Adds node to the start of the list. node must not be null.
Throws an InvalidOperationException if node is part of 
another list.
public LinkedList<T> AddLast( T value)
Adds a node with the value value to the end of the list. 
Returns a reference to the node containing the value value.
public void AddLast(LinkedListNode<T> node)
Adds node to the end of the list. node must not be null.
Throws an InvalidOperationException if node is part of 
another list.
public LinkedList<T> Find(T value)
Returns a reference to the first node in the list that has the 
value value.null is returned if value is not in the list.
public LinkedList<T> FindLast(T value)
Returns a reference to the last node in the list that has the 
value value.null is returned if value is not in the list.
T
ABLE
25-16  A Sampling of Methods Defi ned by LinkedList<T> 
Pdf merge documents - Merge, append PDF files in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Provide C# Demo Codes for Merging and Appending PDF Document
add pdf files together reader; add pdf pages together
Pdf merge documents - VB.NET PDF File Merge Library: Merge, append PDF files in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
VB.NET Guide and Sample Codes to Merge PDF Documents in .NET Project
batch combine pdf; reader combine pdf pages
P
A
R
T
I
I
Chapter 25: Collections, Enumerators, and Iterators  
855
Here is an example that demonstrates the LinkedList<T> class:
// Demonstrate LinkedList<T>.
using System;
using System.Collections.Generic;
class GenLinkedListDemo {
static void Main() {
// Create a linked list.
LinkedList<char> ll = new LinkedList<char>();
Console.WriteLine("Initial number of elements: " +
ll.Count);
Console.WriteLine();
Console.WriteLine("Adding 5 elements.");
// Add elements to the linked list
ll.AddFirst('A');
ll.AddFirst('B');
ll.AddFirst('C');
ll.AddFirst('D');
ll.AddFirst('E');
Console.WriteLine("Number of elements: " +
ll.Count);
// Display the linked list by manually walking
// through the list.
LinkedListNode<char> node;
Console.Write("Display contents by following links: ");
for(node = ll.First; node != null; node = node.Next)
Console.Write(node.Value + " ");
Console.WriteLine("\n");
public bool Remove(T value)
Removes the first node in the list that has the value value.
Returns true if the node was removed. (That is, if a node with 
the value value was in the list and it was removed.) Returns 
false otherwise.
public void Remove(LinkedList<T> node)
Removes the node that matches node. Throws an 
InvalidOperationException if node is not in the list.
public void RemoveFirst( )
Removes the first node in the list.
public void RemoveLast( )
Removes the last node in the list.
T
ABLE
25-16  A Sampling of Methods Defi ned by LinkedList<T> (continued)
Method
Description
C# XDoc.HTML5 Viewer- Supported File Formats
FREE TRIAL: HOW TO: XDoc.HTML5 Viewer for C#▶: C# ASP.NET: View documents; C# ASP.NET PDF to HTML; C#: Convert PDF to Jpeg; C# File: Compress PDF; C# File: Merge
break pdf into multiple files; all jpg to one pdf converter
C# Word - Merge Word Documents in C#.NET
C# Word - Merge Word Documents in C#.NET. Provide C# Demo Codes for Merging and Appending Word Document. Overview. RasterEdge C#.NET
batch combine pdf; best pdf merger
856
Part II: Exploring the C# Library
//Display the linked list by use of a foreach loop.
Console.Write("Display contents with foreach loop: ");
foreach(char ch in ll)
Console.Write(ch + " ");
Console.WriteLine("\n");
// Display the list backward by manually walking
// from last to first.
Console.Write("Follow links backwards: ");
for(node = ll.Last; node != null; node = node.Previous)
Console.Write(node.Value + " ");
Console.WriteLine("\n");
// Remove two elements.
Console.WriteLine("Removing 2 elements.");
// Remove elements from the linked list.
ll.Remove('C');
ll.Remove('A');
Console.WriteLine("Number of elements: " +
ll.Count);
// Use foreach loop to display the modified list.
Console.Write("Contents after deletion: ");
foreach(char ch in ll)
Console.Write(ch + " ");
Console.WriteLine("\n");
// Add three elements to the end of the list.
ll.AddLast('X');
ll.AddLast('Y');
ll.AddLast('Z');
Console.Write("Contents after addition to end: ");
foreach(char ch in ll)
Console.Write(ch + " ");
Console.WriteLine("\n");
}
}
Here is the output:
Initial number of elements: 0
Adding 5 elements.
Number of elements: 5
Display contents by following links: E D C B A
Display contents with foreach loop: E D C B A
C# PowerPoint - Merge PowerPoint Documents in C#.NET
C# PowerPoint - Merge PowerPoint Documents in C#.NET. Provide C# Demo Codes for Merging and Appending PowerPoint Document. Overview.
reader combine pdf; c# merge pdf files
C# PDF Print Library: Print PDF documents in C#.net, ASP.NET
FREE TRIAL: HOW TO: XDoc.HTML5 Viewer for C#▶: C# ASP.NET: View documents; C# ASP.NET PDF to HTML; C#: Convert PDF to Jpeg; C# File: Compress PDF; C# File: Merge
acrobat reader merge pdf files; add pdf together one file
P
A
R
T
I
I
Chapter 25: Collections, Enumerators, and Iterators  
857
Follow links backwards: A B C D E
Removing 2 elements.
Number of elements: 3
Contents after deletion: E D B
Contents after addition to end: E D B X Y Z
Perhaps the most important thing to notice in this program is that the list is traversed in 
both the forward and backward direction by following the links provided by the Next and 
Previous properties. The bidirectional property of doubly linked lists is especially important 
in applications such as databases in which the ability to move efficiently through the list in 
both directions is often necessary.
The Dictionary<TKey, TValue> Class
TheDictionary<TKey, TValue> class stores key/value pairs. In a dictionary, values 
are accessed through their keys. In this regard, it is similar to the non-generic Hashtable
class.Dictionary<TKey, TValue> implements IDictionary,IDictionary<TKey, 
TValue>,ICollection,ICollection<KeyValuePair<TKey, TValue>>,IEnumerable,
IEnumerable<KeyValuePair<TKey, TValue>>,ISerializable, and IDeserializationCallback.
e dynamic, 
growing as needed.
Dictionary<TKey, TValue> provides many constructors. Here is a sampling:
public Dictionary( )
public Dictionary(IDictionary<TKey, TValue> dictionary)
public Dictionary(int capacity)
The first constructor creates an empty dictionary with a default capacity. The second creates 
a dictionary that contains the same elements as those in dictionary. The third lets you specify 
an initial capacity
then specifying that capacity will prevent the resizing of the dictionary at runtime, which is 
a costly process.
Dictionary<TKey, TValue> defines several methods. Some commonly used ones are 
shown in Table 25-17.
Method
Description
public void Add(TKey key, TValue value)
Adds the key/value pair specified by key and value to the dictionary. 
If the key is already in the dictionary, then its value is unchanged and 
anArgumentException is thrown. key must not be null.
public bool ContainsKey(TKey key)
Returns true if key is a key in the invoking dictionary. Returns false 
otherwise.
public bool ContainsValue(TValue value)
Returns true if value is a value in the invoking dictionary. Returns 
false otherwise.
public bool Remove(TKey key)
Removes key from the dictionary. Returns true if successful. Returns 
false ifkey was not in the dictionary.
T
ABLE
25-17  Several Commonly Used Methods Defi ned by Dictionary<TKey, TValue>
VB.NET PDF Print Library: Print PDF documents in vb.net, ASP.NET
FREE TRIAL: HOW TO: XDoc.HTML5 Viewer for C#▶: C# ASP.NET: View documents; C# ASP.NET PDF to HTML; C#: Convert PDF to Jpeg; C# File: Compress PDF; C# File: Merge
pdf merger; break a pdf into multiple files
XDoc.HTML5 Viewer for .NET, Zero Footprint AJAX Document Image
controls, PDF document, image to pdf files and components for capturing, viewing, processing, converting, compressing and stroing images, documents and more.
combine pdf; c# merge pdf files into one
858
Part II: Exploring the C# Library
In addition to the properties defined by the interfaces that it implements, 
Dictionary<TKey, TValue> defines these properties:
Property
Description
public IEqualityComparer<TKey>
Comparer { get; }
Obtains the comparer for the invoking dictionary.
public Dictionary<TKey, TValue>.KeyCollection
Keys { get; }
Obtains a collection of the keys.
public Dictionary<TKey, TValue>.ValueCollection
Values { get; }
Obtains a collection of the values. 
Notice that the keys and values contained within the collection are available as 
separate lists through the Keys and Values properties. The types Dictionary<TKey, 
TValue>.KeyCollection and Dictionary<TKey, TValue>.ValueCollection are 
collections that implement both the generic and non-generic forms of ICollection
andIEnumerable.
The following indexer, defined by IDictionary<TKey, TValue>, is implemented by 
Dictionary<TKey, TValue> as shown here:
public TValue this[TKey key] { get; set; }
You can use this indexer to get or set the value of an element. You can also use it to add a 
the key of the item.
When enumerating the collection, Dictionary<TKey, TValue> returns key/value pairs 
in the form of a KeyValuePair<TKey, TValue> structure. Recall that this structure defines 
the following two properties:
public TKey Key { get; }
public TValue Value { get; }
These properties obtain the key or value associated with an entry. However, most of the 
time you won’t  need to use KeyValuePair<TKey, TValue> directly because Dictionary<TKey, 
TValue> allows you to work the keys and values individually. However, when enumerating 
aDictionary<TKey, TValue>, such as in a foreach loop, the objects being enumerated are 
KeyValuePairs.
In a Dictionary<TKey, TValue>, all keys must be unique, and a key must not change 
while it is in use as a key. Values need not be unique. The objects in a Dictionary<TKey, 
TValue> are not stored in sorted order.
Here is an example that demonstrates Dictionary<TKey, TValue>:
// Demonstrate the generic Dictionary<TKey, TValue> class.
using System;
using System.Collections.Generic;
C# PDF: C#.NET PDF Document Merging & Splitting Control SDK
file. C#.NET APIs to Combine Two or More PDF Documents. void String destn); C#.NET Sample Codes to Merge Multiple PDF Files. public void
pdf combine; combine pdf online
VB.NET PDF: Use VB.NET Code to Merge and Split PDF Documents
VB.NET PDF - How to Merge and Split PDF. How to Merge and Split PDF Documents by Using VB.NET Code. Visual C#. VB.NET. Home > .NET Imaging
add pdf files together online; pdf combine pages
P
A
R
T
I
I
Chapter 25: Collections, Enumerators, and Iterators  
859
class GenDictionaryDemo {
static void Main() {
// Create a Dictionary that holds employee
// names and their corresponding salary.
Dictionary<string, double> dict =
new Dictionary<string, double>();
// Add elements to the collection.
dict.Add("Butler, John", 73000);
dict.Add("Swartz, Sarah", 59000);
dict.Add("Pyke, Thomas", 45000);
dict.Add("Frank, Ed", 99000);
// Get a collection of the keys (names).
ICollection<string> c = dict.Keys;
// Use the keys to obtain the values (salaries).
foreach(string str in c)
Console.WriteLine("{0}, Salary: {1:C}", str, dict[str]);
}
}
Here is the output:
Butler, John, Salary: $73,000.00
Swartz, Sarah, Salary: $59,000.00
Pyke, Thomas, Salary: $45,000.00
Frank, Ed, Salary: $99,000.00
The SortedDictionary<TKey, TValue> Class
TheSortedDictionary<TKey, TValue> class stores key/value pairs and is similar 
toDictionary<TKey, TValue> except that it is sorted by key. SortedDictionary<TKey, 
TValue> implements IDictionary,IDictionary<TKey, TValue>,ICollection,
ICollection<KeyValuePair<TKey, TValue>>,IEnumerable, and 
IEnumerable<KeyValuePair<TKey, TValue>>.SortedDictionary<TKey, 
TValue> provides the following constructors:
public SortedDictionary( )
public SortedDictionary(IDictionary<TKey, TValue> dictionary)
public SortedDictionary(IComparer<TKey> comparer)
public SortedDictionary(IDictionary<TKey, TValue> dictionary,
IComparer<TKey> comparer)
The first constructor creates an empty dictionary. The second creates a dictionary that 
contains the same elements as those in dictionary. The third lets you specify the IComparer
specify the IComparer.
SortedDictionary<TKey, TValue> defines several methods. A sampling is shown in 
Table 25-18.
860
Part II: Exploring the C# Library
In addition to the properties defined by the interfaces that it implements, 
SortedDictionary<TKey, TValue> defines the following properties:
Property
Description
public IComparer<TKey> Comparer { get; }
Obtains the comparer for the invoking dictionary.
public
SortedDictionary<TKey, TValue>.KeyCollection
Keys { get; }
Obtains a collection of the keys. 
public
SortedDictionary<TKey, TValue>.ValueCollection
Values { get; }
Obtains a collection of the values. 
Notice that the keys and values contained within the collection are available as separate lists 
through the Keys and Values properties. The types
SortedDictionary<TKey, TValue>.KeyCollection
SortedDictionary<TKey, TValue>.ValueCollection
are collections that implement both the generic and non-generic forms of ICollection and 
IEnumerable.
SortedDictionary<TKey, TValue> defines the following indexer (which is specified by 
IDictionary<TKey, TValue>):
public TValue this[TKey key] { get; set; }
You can use this indexer to get or set the value of an element. You can also use it to add a 
key of the item.
When enumerated, SortedDictionary<TKey, TValue> returns key/value pairs in the 
form of a KeyValuePair<TKey, TValue> structure. Recall that this structure defines the 
following two properties:
Method
Description
public void Add(TKey key, TValue value)
Adds the key/value pair specified by key and value to the 
dictionary. If the key is already in the dictionary, then its value 
is unchanged and an ArgumentException is thrown. key
must not be null.
public bool ContainsKey(TKey key)
Returns true if key is a key in the invoking dictionary. Returns 
false otherwise.
public bool ContainsValue(TValue value)
Returns true if value is a value in the invoking dictionary. 
Returns false otherwise.
public bool Remove(TKey key)
Removes key from the dictionary. Returns true if successful. 
Returns false ifkey was not in the dictionary.
T
ABLE
25-18   A Sampling of Methods Defi ned by SortedDictionary<TKey, TValue>
P
A
R
T
I
I
Chapter 25: Collections, Enumerators, and Iterators  
861
public TKey Key { get; }
public TValue Value { get; }
These properties obtain the key or value associated with an entry. However, most of the time 
you won’t need to use KeyValuePair<TKey, TValue> directly because SortedDictionary<TKey, 
TValue> allows you to work with the keys and values individually. However, when 
enumerating a SortedDictionary<TKey, TValue>, such as in a foreach loop, the objects 
being enumerated are KeyValuePairs.
In a SortedDictionary<TKey, TValue>, all keys must be unique, and a key must not 
change while it is in use as a key. Values need not be unique.
Here is an example that demonstrates SortedDictionary<TKey, TValue>. It reworks 
theDictionary<TKey, TValue> example shown in the preceding section. In this version, the 
// Demonstrate the generic SortedDictionary<TKey, TValue> class.
using System;
using System.Collections.Generic;
class GenSortedDictionaryDemo {
static void Main() {
// Create a SortedDictionary that holds employee
// names and their corresponding salary.
SortedDictionary<string, double> dict =
new SortedDictionary<string, double>();
// Add elements to the collection.
dict.Add("Butler, John", 73000);
dict.Add("Swartz, Sarah", 59000);
dict.Add("Pyke, Thomas", 45000);
dict.Add("Frank, Ed", 99000);
// Get a collection of the keys (names).
ICollection<string> c = dict.Keys;
// Use the keys to obtain the values (salaries).
foreach(string str in c)
Console.WriteLine("{0}, Salary: {1:C}", str, dict[str]);
}
}
The output is shown here:
Butler, John, Salary: $73,000.00
Frank, Ed, Salary: $99,000.00
Pyke, Thomas, Salary: $45,000.00
Swartz, Sarah, Salary: $59,000.00
As you can see, the list is now sorted based on the key, which is the employee’s name.
The SortedList<TKey, TValue> Class
TheSortedList<TKey, TValue> class stores a sorted list of key/value pairs. It is the generic 
equivalent of the non-generic SortedList class. SortedList<TKey, TValue> implements
862
Part II: Exploring the C# Library
IDictionary,IDictionary<TKey, TValue>, ICollection,ICollection< KeyValuePair<TKey, 
TValue>>,IEnumerable, and IEnumerable< KeyValuePair<TKey, TValue>>. The size 
of a SortedList<TKey, TValue> is dynamic and will automatically grow as needed. 
SortedList<TValue, TKey> is similar to SortedDictionary<TKey, TValue> but has different 
performance characteristics. For example, a SortedList<TKey, TValue> uses less memory, 
but a SortedDictionary<TKey, TValue> is faster when inserting out-of-order elements.
SortedList<TKey, TValue> provides many constructors. Here is a sampling:
public SortedList( )
public SortedList(IDictionary<TKey, TValue> dictionary)
public SortedList(int capacity)
public SortedList(IComparer<TKey> comparer)
The first constructor creates an empty list with a default capacity. The second creates a list 
that contains the same elements as those in dictionary. The third lets you specify an initial 
capacity
that capacity will prevent the resizing of the list at runtime, which is a costly process. The 
e the objects 
contained in the list.
The capacity of a SortedList<TKey, TValue> list grows automatically as needed when 
elements are added to the list. When the current capacity is exceeded, the capacity is 
increased. The advantage of specifying a capacity is that you can prevent or minimize the 
overhead associated with resizing the collection. Of course, it makes sense to specify an 
ed.
SortedList<TKey, TValue> also defines several methods of its own. A sampling is 
shown in Table 25-19. Notice the enumerator returned by GetEnumerator( ) enumerates 
the key/value pairs stored in the list as objects of type KeyValuePair.
In addition to the properties defined by the interfaces that it implements, 
SortedList<TKey, TValue> defines the following properties:
Property
Description
public int Capacity { get; set; }
Obtains or sets the capacity of the invoking list.
public IComparer<TKey> Comparer { get; }
Obtains the comparer for the invoking list.
public IList<TKey> Keys { get; } 
Obtains a collection of the keys. 
public IList<TValue> Values { get; }
Obtains a collection of the values. 
SortedList<TKey, TValue> defines the following indexer (which is defined by 
IDictionary<TKey, TValue>):
public TValue this[TKey key] { get; set; }
You can use this indexer to get or set the value of an element. You can also use it to add a 
key of the item.
P
A
R
T
I
I
Chapter 25: Collections, Enumerators, and Iterators  
863
Here is an example that demonstrates SortedList<TKey, TValue>. It reworks the 
employee database example one more time. In this version, the database is stored in a 
SortedList.
// Demonstrate a SortedList<TKey, TValue>.
using System;
using System.Collections.Generic;
class GenSLDemo {
static void Main() {
// Create a SortedList for
// employee names and salary.
SortedList<string, double> sl =
new SortedList<string, double>();
// Add elements to the collection.
sl.Add("Butler, John", 73000);
sl.Add("Swartz, Sarah", 59000);
sl.Add("Pyke, Thomas", 45000);
sl.Add("Frank, Ed", 99000);
Method
Description
public void Add(TKey key, TValue value)
Adds the key/value pair specified by key and value to the list. If 
thekey is already in the list, then its value is unchanged and an 
ArgumentException is thrown. key must not be null.
public bool ContainsKey(TKey key)
Returns true if key is a key in the invoking list. Returns false 
otherwise.
public bool ContainsValue(TValue value)
Returns true if value is a value in the invoking list. Returns false 
otherwise.
public IEnumerator<KeyValuePair<TKey,
TValue>>
GetEnumerator( )
Returns an enumerator for the invoking list.
public int IndexOfKey(TKey key)
Returns the index of the key specified by key. Returns –1 if the key is 
not in the list.
public int IndexOfValue(TValue value)
Returns the index of the first occurrence of the value specified by 
value. Returns –1 if the value is not in the list.
public bool Remove(TKey key)
Removes the key/value pair associated with key from the list. 
Returns true if successful. Returns false if key is not in the list.
public void RemoveAt(int index)
Removes the key/value pair at the index specified by index.
public void TrimExcess( )
Removes the excess capacity of the invoking list.
T
ABLE
25-19  Several Commonly Used Methods Defi ned by SortedList<TKey, TValue>
Documents you may be interested
Documents you may be interested