VB.NET List

List

List is a resizable array. It stores a variable number of elements in an expandable collection.
Unlike an array,
it changes its size as needed,
on its own. This type offers many useful methods.

Array

Add

The Add sub on the List is used in many programs. It 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.

Add

Note:The internal buffers in the List will dynamically expand. This example demonstrates the Add sub.

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.

Program that uses Add on List type: VB.NET

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

Loop

We show two ways you 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 construct on that 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.

Program that uses For-Each and For, List: VB.NET

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

Pound symbol

The Count property returns the total number of elements in the List, and is similar in semantics to the Length property on an array. 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.

Program that uses Count and Clear: VB.NET

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

This section provides information

Let us instantiate the List type and initialize it to have some specific elements. 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.

Program that initializes List instance: VB.NET

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

If

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 the value 3 and if that test succeeds, you want to perform some other action.

Tip:To do this, you can use a For-Each loop and then an enclosed If-statement in the VB.NET language.

Program that uses if, List elements: VB.NET

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

Join objects together

The String.Join method combines an array of strings into a single string with a specific delimiter character dividing the parts. Until recently, there was no Join method that could effectively be applied directly to the List type.

Note:The .NET 4.0 Framework provides a new String.Join overload that accepts an argument of type IEnumerable.

Join

In this example, we convert a List into an array. We apply the ToArray extension method in the VB.NET language, and then pass as an argument this result to the String.Join method.

ToArray
Program that uses Join on List: VB.NET

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

Key: used to access value

Here, we see how the List and Dictionary types 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.

Dictionary
Program that uses Keys and List: VB.NET

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

The VB.NET programming language

When you use the Insert instance method on the List type, the first argument must be the desired index for the element. For example, the index 1 will put the element in the second index, because the List is ordered starting at zero.

Program that uses Insert method: VB.NET

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

Steps

Next, we show how to use the GetRange instance method. This function receives two arguments: the first being the starting index, and the second being the number of elements (count) you wish to receive.

Program that uses GetRange method: VB.NET

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

Find icon

You can also use the Find, FindIndex, FindLast, and FindLastIndex functions on the List type. These provide a way for you to declaratively search your List. This approach can eliminate some complexity from your programs.

List FindBinarySearch List

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. It serves developers well in the long run.


VB.NET: Collections