C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
It stores a variable number of elements in an expandable collection. Unlike an array, it changes its size as needed, on its own.
Type. The List type offers many useful methods. We add elements. We count elements. We can locate elements with IndexOf or Find. List is powerful.
Add example. This Sub is often used in a loop body to add elements programmatically to the collection. We do not need to predict the final size of the List.
Of Integer: The keywords "Of Integer" mean that the List will contain only Integers. Other types, even Objects, are not allowed in it.
Argument: The argument to the Add subroutine is the value we want to add to the List. The value is added after all existing elements.
Based on: .NET 4.5 VB.NET program that uses Add Module Module1 Sub Main() Dim list As New List(Of Integer) list.Add(2) list.Add(3) list.Add(5) list.Add(7) End Sub End Module
Loops. We can loop over the elements in a List instance. The program adds three integers to the List contents, and then uses a For-Each loop construct. Finally it uses a For-loop.
Note: The expression "list.Count - 1" is used for the upper loop bounds on the For-loop. This keeps the index valid throughout.
Function: In the second loop, the Item function is invoked. This is an indexer function—it allows you to access an element at that index.
VB.NET program that uses For-Each and For, List Module Module1 Sub Main() Dim list As New List(Of Integer) list.Add(2) list.Add(3) list.Add(7) ' Loop through list elements. Dim num As Integer For Each num In list Console.WriteLine(num) Next ' Loop through list with a for-to loop. Dim i As Integer For i = 0 To list.Count - 1 Console.WriteLine(list.Item(i)) Next i End Sub End Module Output 2 3 7 2 3 7
Count, Clear. The Count property returns the total number of elements in the List. The Clear function removes all the elements so that the next invocation of Count will return zero.
Here: We use the Count property and the Clear function on the List type instance.
VB.NET program that uses Count and Clear Module Module1 Sub Main() ' Create a list of booleans. Dim list As New List(Of Boolean) list.Add(True) list.Add(False) list.Add(True) ' Write the count. Console.WriteLine(list.Count) ' Clear the list elements. list.Clear() ' Write the count again. Console.WriteLine(list.Count) End Sub End Module Output 3 0
Initialize. Let us initialize a List. The benefit to using this syntax is that it reduces the size of your source text. It sometimes increases readability because of that.
Note: There is no important difference at the level of the intermediate language of the compiled program.
VB.NET program that initializes List instance Module Module1 Sub Main() ' Create a list of three integers. Dim list As New List(Of Integer)(New Integer() {2, 3, 5}) ' Write the count. Console.WriteLine(list.Count) End Sub End Module Output 3
If-statement. We often need to scan or loop through the elements in the List and use logical tests on them. Perhaps we need to test each element against a specific value.
Tip: To do this, you can use a For-Each loop and then an enclosed If-statement in the VB.NET language.
VB.NET program that uses if, List elements Module Module1 Sub Main() ' Create a list of three integers. Dim list As New List(Of Integer)(New Integer() {2, 3, 5}) ' Loop through each number in the list. ' ... Then check it against the integer 3. Dim num As Integer For Each num In list If (num = 3) Then Console.WriteLine("Contains 3") End If Next End Sub End Module Output Contains 3
Join. The String.Join method combines an array of strings into a single string with a specific delimiter character dividing the parts. A List can now be used with Join.
Note: The .NET 4.0 Framework provides a new String.Join overload that accepts an argument of type IEnumerable.
Here: We convert a List into an array. We apply the ToArray extension and then pass as an argument this result to String.Join.
VB.NET program that uses Join on List Module Module1 Sub Main() ' Create a list of strings. ' ... Then use the String.Join method on it. Dim list As New List(Of String) list.Add("New York") list.Add("Mumbai") list.Add("Berlin") list.Add("Istanbul") Console.WriteLine(String.Join(",", list.ToArray)) End Sub End Module Output New York,Mumbai,Berlin,Istanbul
List, keys. List and Dictionary can be used together. We can acquire a List instance of all of the keys from a Dictionary instance. Then, that List can be used just like any other List.
Dictionary: More information is available on the Dictionary generic type in the VB.NET language.
VB.NET that uses Keys and List Module Module1 Sub Main() ' Create a dictionary of integers and boolean values. ' ... Add two pairs to it. Dim dictionary As New Dictionary(Of Integer, Boolean) dictionary.Add(3, True) dictionary.Add(5, False) ' Get the list of keys. Dim list As New List(Of Integer)(dictionary.Keys) ' Loop through the list and display the keys. Dim num As Integer For Each num In list Console.WriteLine(num) Next End Sub End Module Output 3 5
Insert. When we use Insert, the first argument must be the desired index for the element. The second argument is the element to insert.
Index: For example, the index 1 will put the element in the second index, because the List is ordered starting at zero.
VB.NET that uses Insert method Module Module1 Sub Main() ' Create a list of strings. Dim list As New List(Of String) list.Add("spaniel") list.Add("beagle") ' Insert a pair into the list. list.Insert(1, "dalmatian") ' Loop through the entire list. Dim str As String For Each str In list Console.WriteLine(str) Next End Sub End Module Output spaniel dalmatian beagle
GetRange. This function receives two arguments. The first is the starting index. And the second argument is the number of elements (count) you wish to receive.
VB.NET that uses GetRange method Module Module1 Sub Main() ' Create a new list of strings and add five strings to it. Dim list As New List(Of String)(New String() {"nile", _ "amazon", _ "yangtze", _ "mississippi", _ "yellow"}) ' Loop through the strings. Dim str As String For Each str In list.GetRange(1, 2) Console.WriteLine(str) Next End Sub End Module Output amazon yangtze
Find. We can also use the Find, FindIndex, FindLast and FindLastIndex functions. These provide a way for us to declaratively search a List. This reduces complexity.
BinarySearch. In a binary search, a value is located in a sorted list by testing positions in the list. The search then "hones" in on the value. This can optimize performance.
IndexOf. This method locates a value within a List. It returns the index of a match was found. It returns -1 if no matching value exists in the List.
VB.NET that uses IndexOf Module Module1 Sub Main() Dim sizes As List(Of Integer) = New List(Of Integer) sizes.Add(10) sizes.Add(20) sizes.Add(30) ' The value 20 occurs at the index 1. Dim index20 As Integer = sizes.IndexOf(20) Console.WriteLine(index20) ' The value 100 does not occur, so IndexOf returns -1. Dim index100 As Integer = sizes.IndexOf(100) If index100 = -1 Then Console.WriteLine("Not found") End If End Sub End Module Output 1 Not found
Duplicates. Unlike a Dictionary, a List can contain duplicate elements. This often can be a problem. We can remove these duplicates in many ways.
Convert. Often we must use custom methods to convert and modify List collections. We can convert a List into another type, like a Dictionary.
A summary. The List type is a generic, constructed type. It has some performance advantages over other structures. In many programs, the List type is useful.