10/5/2008 Chapter 8 Objectives

Transcription

10/5/2008 Chapter 8 Objectives
10/5/2008
Objectives
Applied
• Given the specifications for an application that requires the use of
a one-dimensional, rectangular, or jagged array, write the code
that works with the array.
Chapter 8
• Given the specifications for an application that requires the use of
one of the collection classes presented in this chapter, write the
code that works with the collection.
collection
How to work with
arrays and collections
Knowledge
• Distinguish between a For loop and a For Each loop.
• Explain how the Array class can be used with an array.
• Distinguish between an untyped and a typed collection class.
• Describe the differences between these collection classes: list,
sorted list, queue, and stack.
Murach’s Visual Basic 2008, C8
© 2008, Mike Murach & Associates, Inc.
Slide 1
Murach’s Visual Basic 2008, C8
© 2008, Mike Murach & Associates, Inc.
Slide 2
How to declare and initialize an array
The syntax for declaring and initializing a
one-dimensional array
Declaring and initializing an array
Dim numbers(99) As Integer
Declaring and initializing a one-dimensional array
' provides for 100 numbers
Getting the upper bound from a variable
Dim arrayName(upperbound) As type
Declaring but not initializing a one-dimensional array
Dim maxTotals As Integer = CInt(txtUpperBound.Text)
Dim totals(maxTotals) As Decimal
Dim arrayName() As type
Using the New keyword to initialize an array
Initializing an array that has only been declared
Dim maxTotals As Integer = CInt(txtUpperBound.Text)
Dim totals() As Decimal
totals = New Decimal(maxTotals) {}
arrayName = New type(upperbound) {}
How to document the lower bound when you
declare an array
Dim titles(0 To 49) As String
Murach’s Visual Basic 2008, C8
© 2008, Mike Murach & Associates, Inc.
Slide 3
Murach’s Visual Basic 2008, C8
' provides for 50 titles
© 2008, Mike Murach & Associates, Inc.
Slide 4
The syntax for referring to an element of an array
arrayName(index)
Default values for array elements
Data type
All numeric types
Char
Boolean
Date
All reference types
Code that assigns values to an array of Decimal
types
Default value
0 (zero)
Null (binary 0)
False
01/01/0001 00:00:00
Null reference
Dim totals(3) As Decimal
' this provides for 4 elements
totals(0) = 14.95D
totals(1) = 12.95D
totals(2) = 11.95D
totals(3) = 9.95D
'totals(4) = 8.95D
' this would throw an IndexOutOfRangeException
Code that assigns objects to an array of strings
Dim names(2) As
names(0) = "Ted
names(1) = "Sue
names(2) = "Ray
Murach’s Visual Basic 2008, C8
© 2008, Mike Murach & Associates, Inc.
Slide 5
Murach’s Visual Basic 2008, C8
String
Lewis"
Jones"
Thomas"
© 2008, Mike Murach & Associates, Inc.
Slide 6
1
10/5/2008
The syntax for creating an array and assigning
values in one statement
The syntax for using the Length property of an
array
Dim arrayName() As type =
[New type(upperbound)] {value1[, value2]
[, value3]...}
arrayName.Length
A For loop that puts the numbers 0 through 9 into
an array
Examples that create an array and assign values
in one statement
Dim totals() As Decimal = {14.95D, 12.95D, 11.95D, 9.95D}
Dim names() as String =
{"Ted Lewis", "Sue Jones", "Ray Thomas"}
Dim numbers(9) As Integer
For i As Integer = 0 To numbers.Length - 1
numbers(i)
( ) = i
Next
Dim totals() As Decimal =
New Decimal(3) {14.95D, 12.95D, 11.95D, 9.95D}
Murach’s Visual Basic 2008, C8
© 2008, Mike Murach & Associates, Inc.
Slide 7
Code that displays the numbers array in a
message box
Slide 8
Dim totals() As Decimal = {14.95D, 12.95D, 11.95D, 9.95D}
Dim sum As Decimal = 0
For i As Integer = 0 To totals.Length - 1
sum += totals(i)
Next
Dim average As Decimal = sum / totals.Length
The message box that’s displayed
© 2008, Mike Murach & Associates, Inc.
© 2008, Mike Murach & Associates, Inc.
Code that uses a For loop to compute the average
of a totals array
Dim numbersString As String = ""
For i As Integer = 0 To numbers.Length - 1
numbersString &= numbers(i).ToString & " "
Next
MessageBox.Show(numbersString, "Numbers Test")
Murach’s Visual Basic 2008, C8
Murach’s Visual Basic 2008, C8
Slide 9
Code that displays the totals array in a message
box
Dim totalsString As String = ""
For i As Integer = 0 To totals.Length - 1
totalsString &= total.ToString & vbCrLf
Next
MessageBox.Show("The totals are:" _
& vbCrLf & totalsString & vbCrLf & _
"Sum: " & sum & vbCrLf & "Average: " & average, _
"Totals Test")
Murach’s Visual Basic 2008, C8
© 2008, Mike Murach & Associates, Inc.
Slide 10
The syntax of a For Each loop
For Each elementName [As type] In arrayName
statements
Next
Code that displays the numbers array in a
message box
Dim numbersString As String = ""
For Each number As Integer In numbers
numbersString &= number.ToString & " "
Next
MessageBox.Show(numbersString, "Numbers Test")
The message box that’s displayed
The message box that’s displayed
Murach’s Visual Basic 2008, C8
© 2008, Mike Murach & Associates, Inc.
Slide 11
Murach’s Visual Basic 2008, C8
© 2008, Mike Murach & Associates, Inc.
Slide 12
2
10/5/2008
Code that displays the totals array in a message
box
Code that computes the average of the totals
array
Dim totalsString As String = ""
For Each total In totals
totalsString &= total.ToString & vbCrLf
Next
MessageBox.Show("The totals are:" _
& vbCrLf & totalsString & vbCrLf & _
"Sum: " & sum & vbCrLf & "Average: " & average, _
"Totals Test")
Dim sum As Decimal = 0
For Each total As Decimal In totals
sum += total
Next
Dim average As Decimal = sum / totals.Length
The message box that’s displayed
Murach’s Visual Basic 2008, C8
© 2008, Mike Murach & Associates, Inc.
Slide 13
The syntax for declaring a rectangular array
Dim arrayName(firstupperbound, secondupperbound) As type
Murach’s Visual Basic 2008, C8
Dim numbers(2,1) As Integer
Slide 14
The index values for the elements of a 3x2
rectangular array
0,0
1,0
2,0
A statement that creates a 3x2 array
© 2008, Mike Murach & Associates, Inc.
0,1
1,1
2,1
Code that assigns values to the numbers array
The syntax for referring to an element of a
rectangular array
numbers(0,0)
numbers(0,1)
numbers(1,0)
numbers(1,1)
numbers(2,0)
numbers(2,1)
arrayName(rowindex, columnindex)
=
=
=
=
=
=
1
2
3
4
5
6
Code that creates a 3x2 array and assigns values
with one statement
Dim numbers(,) As Integer = { {1,2}, {3,4}, {5,6} }
Murach’s Visual Basic 2008, C8
© 2008, Mike Murach & Associates, Inc.
Slide 15
Slide 16
arrayName.GetLength(dimensionindex)
Dim products(,) As String = _
{{"VB08", "Murach's Visual Basic 2008"}, _
{"JSE6", "Murach's Java SE 6"}, _
{"A3VB", "Murach's ASP.NET 3.5 with VB 2008"}}
© 2008, Mike Murach & Associates, Inc.
© 2008, Mike Murach & Associates, Inc.
The syntax for using the GetLength method of a
rectangular array
Code that creates and assigns values to a 3x2
array of strings
Murach’s Visual Basic 2008, C8
Murach’s Visual Basic 2008, C8
Code that works with the numbers array
Dim
Dim
Dim
Dim
Slide 17
numbers(,) As Integer = { {1,2}, {3,4}, {5,6} }
numberOfRows As Integer = numbers.GetLength(0)
numberOfColumns As Integer = numbers.GetLength(1)
sumOfFirstRow As Integer = numbers(0,0) _
+ numbers(0,1)
Murach’s Visual Basic 2008, C8
© 2008, Mike Murach & Associates, Inc.
Slide 18
3
10/5/2008
Code that displays the products array in a
message box
Code that displays the numbers array in a
message box
Dim productsString As String = ""
For i As Integer = 0 To products.GetLength(0) - 1
For j As Integer = 0 To products.GetLength(1) - 1
productsString &= products(i, j) & vbTab
Next j
productsString &= vbCrLf
Next i
MessageBox.Show(productsString, "Products Test")
Dim numbersString As String = ""
For i As Integer = 0 To numbers.GetLength(0) - 1
For j As Integer = 0 To numbers.GetLength(1) - 1
numbersString &= numbers(i, j) & " "
Next
numbersString &= vbCrLf
Next
MessageBox.Show(numbersString, "Numbers Test")
The message box that’s displayed
The message box that’s displayed
Murach’s Visual Basic 2008, C8
Slide 19
© 2008, Mike Murach & Associates, Inc.
Dim arrayName(numberofrows)() As type
arrayName(rowindex)(columnindex)
Code that declares a jagged array with three rows
Murach’s Visual Basic 2008, C8
'
'
'
'
3
3
4
2
rows are declared
columns for 1st row
columns for 2nd row
columns for 3rd row
© 2008, Mike Murach & Associates, Inc.
Slide 21
Dim numbers()() As Integer = {New Integer() {1, 2, 3}, _
New Integer() {4, 5, 6, 7}, _
New Integer() {8, 9}}
Code that creates a jagged array of strings
Dim titles()() As String = _
{N
{New
St
String(2)
i (2) {"W
{"War and
d P
Peace",
" "W
"Wuthering
th i
H
Heights",
i ht " _
"1984"}, _
New String(3) {"Casablanca", "Wizard of Oz", _
"Star Wars", "Birdy"}, _
New String(1) {"Blue Suede Shoes", "Yellow Submarine"}}
© 2008, Mike Murach & Associates, Inc.
Statements that assign values to the numbers
array
numbers(0)(0) = 1
numbers(0)(1) = 2
numbers(0)(2)
b
(0)(2) = 3
Murach’s Visual Basic 2008, C8
numbers(1)(0)
numbers(1)(1)
numbers(1)(2)
b
(1)(2)
numbers(1)(3)
=
=
=
=
4
5
6
7
numbers(2)(0) = 8
numbers(2)(1) = 9
© 2008, Mike Murach & Associates, Inc.
Slide 22
Code that displays the numbers array in a
message box
Code that creates the numbers array with one
statement
Murach’s Visual Basic 2008, C8
Slide 20
© 2008, Mike Murach & Associates, Inc.
The syntax for referring to an element of a jagged
array
The syntax for declaring a jagged array
Dim numbers (2)() As Integer
numbers(0) = New Integer(2) {}
numbers(1) = New Integer(3) {}
numbers(2) = New Integer(1) {}
Murach’s Visual Basic 2008, C8
Slide 23
Dim numbersString As String = ""
For i As Integer = 0 To numbers.GetLength(0) - 1
For j As Integer = 0 To numbers(i).Length - 1
numbersString &= numbers(i)(j) & " "
Next
numbersString &= vbCrLf
Next
MessageBox.Show(numbersString,
g
g "Jagged
gg
Numbers Test")
The message box that’s displayed
Murach’s Visual Basic 2008, C8
© 2008, Mike Murach & Associates, Inc.
Slide 24
4
10/5/2008
Code that displays the titles array in a message
box
Common properties and methods of the Array
class
Dim numbersString As String = ""
For i As Integer = 0 To titles.GetLength(0) - 1
For j As Integer = 0 To titles(i).Length - 1
numbersString &= titles(i)(j) & "
"
Next j
numbersString &= vbCrLf
Next i
MessageBox.Show(numbersString,
g
g "Jagged
gg
Titles Test")
Property
Length
Instance method
GetLength(dimension)
The message box that’s displayed
Murach’s Visual Basic 2008, C8
© 2008, Mike Murach & Associates, Inc.
GetUpperBound(dimension)
Slide 25
Common properties and methods of the Array
class (continued)
Static method
Copy(array1, array2, length)
BinarySearch(array, value)
Sort(array)
Murach’s Visual Basic 2008, C8
Description
Copies some or all of the values
in one array to another array.
Searches a one-dimensional array
that’s in ascending order for an
element
l
t with
ith a specified
ifi d value
l
and returns the index for that
element.
Sorts the elements in a onedimensional array into ascending
order.
© 2008, Mike Murach & Associates, Inc.
Slide 27
Code that uses the Sort method
Murach’s Visual Basic 2008, C8
Description
Gets the number of elements in all of
the dimensions of an array.
Description
Gets the number of elements in the
specified dimension of an array.
Gets the index of the last element in
the specified dimension of an array.
© 2008, Mike Murach & Associates, Inc.
Slide 26
Code that uses the GetLength and
GetUpperBound methods
Dim numbers() As Integer = {1, 2, 3, 4}
Dim length As Integer = numbers.GetLength(0)
' length = 4
Dim upperBound As Integer = numbers.GetUpperBound(0)
' upperBound = 3
Murach’s Visual Basic 2008, C8
© 2008, Mike Murach & Associates, Inc.
Slide 28
Code that uses the BinarySearch method
Dim lastNames() As String = {"Boehm", "Taylor", _
"Murach", "Vasquez"}
Array.Sort(lastNames)
Dim message As String = ""
For Each lastName As String In lastNames
message &= lastName & vbCrLf
Next
MessageBox.Show(message, "Sorted Last Names")
Dim employees() As String = {"Adams", "Finkle", _
"Lewis", "Potter"}
Dim salesAmounts() As Decimal = {3275.68D, 4298.55D, _
5289.57D, 1933.98D}
Dim index As Integer = Array.BinarySearch(employees, _
"Finkle")
Dim salesAmount As Decimal = salesAmounts(index)
' salesAmount = 4298.55
The message box that’s displayed
Murach’s Visual Basic 2008, C8
© 2008, Mike Murach & Associates, Inc.
Slide 29
Murach’s Visual Basic 2008, C8
© 2008, Mike Murach & Associates, Inc.
Slide 30
5
10/5/2008
Code that copies all the elements of an array
Code that creates a reference to another array
Dim inches1() As Double = {1, 2, 3}
Dim inches2() As Double = inches1
inches2(2) = 4
' inches1(2) also = 4
How to copy elements of one array to another array
The syntax for copying elements of an array
Array.Copy(fromarray, toarray, length)
Code that copies some of the elements of an array
Another way to copy elements from one array to another
Array.Copy(fromarray, fromindex, toarray, toindex, length)
Murach’s Visual Basic 2008, C8
© 2008, Mike Murach & Associates, Inc.
Slide 31
A Function procedure that returns an array
Murach’s Visual Basic 2008, C8
© 2008, Mike Murach & Associates, Inc.
Slide 32
A Sub procedure that converts an array of inches to an
array of centimeters
Private Function RateArray( _
ByVal elementCount As Integer) As Decimal()
Dim rates(elementCount - 1) As Decimal
For i As Integer = 0 To rates.Length - 1
rates(i) = (i + 1) / 100D
Next
Return rates
End Function
Private Sub ConvertToCentimeters( _
ByRef measurements() As Double)
For i As Integer = 0 To measurements.Length - 1
measurements(i) *= 2.54
Next
End Sub
A statement that calls the procedure
Statements that declare an array and call the procedure
Dim rates() As Decimal = Me.RateArray(4)
© 2008, Mike Murach & Associates, Inc.
Dim names() As String = {"Boehm", "Murach", "Vasquez"}
Dim lastTwoNames(1) As String
Array.Copy(names, 1, lastTwoNames, 0, 2)
How to code a procedure that accepts an array
argument
How to return an array from a procedure
Murach’s Visual Basic 2008, C8
Dim inches() As Double = {1, 2, 3, 4}
Dim centimeters(3) As Double
Array.Copy(inches, centimeters, inches.Length)
For i As Integer = 0 To centimeters.Length - 1
centimeters(i) *= 2.54
' set new values for the new array
Next
Dim measurements() As Double = {1, 2, 3}
Me.ConvertToCentimeters(measurements)
Slide 33
Murach’s Visual Basic 2008, C8
© 2008, Mike Murach & Associates, Inc.
Slide 34
Commonly used collection classes
How arrays and collections are similar
• Both can store multiple elements, which can be value types or
reference types.
.NET 2.0 to 3.5
List()
.NET 1.x
ArrayList
SortedList()
SortedList
Queue()
Queue
Stack()
Stack
How arrays and collections are different
• An array is a feature of the Visual Basic language that inherits the
Array class. Collections are other classes in the .NET Framework.
• Collection classes provide methods to perform operations that
arrays don’t provide.
• Arrays are fixed in size. Collections are variable in size.
Murach’s Visual Basic 2008, C8
© 2008, Mike Murach & Associates, Inc.
Slide 35
Murach’s Visual Basic 2008, C8
Description
Uses an index to access each
element. Efficient for accessing
elements sequentially; inefficient
for inserting elements into a list.
Uses a key to access a value, which
can be any type of object. Efficient
for inserting elements into a list;
can be inefficient for accessing
elements sequentially.
Uses special methods to add and
remove elements.
Uses special methods to add and
remove elements.
© 2008, Mike Murach & Associates, Inc.
Slide 36
6
10/5/2008
Untyped collections: An example
Typed collections: An example
Dim numbers As New ArrayList
numbers.Add(3)
numbers.Add(70)
numbers.Add("Test")
' will compile, but causes an exception
Dim sum As Integer = 0
Dim number As Integer
For i As Integer = 0 To numbers.Count - 1
' cast is required
number = CInt(numbers(i))
sum += number
Next
Murach’s Visual Basic 2008, C8
© 2008, Mike Murach & Associates, Inc.
Slide 37
A statement that creates a list of String elements
Dim titles As New List(Of String)
Dim numbers As New List(Of Integer)
numbers.Add(3)
numbers.Add(70)
'numbers("Test")
' won't compile - prevents runtime error
Dim sum As Integer = 0
Dim number As Integer
For i As Integer = 0 To numbers.Count - 1
' no cast is required
number = numbers(i)
sum += number
Next
Murach’s Visual Basic 2008, C8
Item(index)
Dim prices As New List(Of Decimal)
A statement that creates a list of strings with a
capacity of 3
Capacity
p
y
Dim lastNames As New List(Of String)(3)
Count
Method
Add(object)
Clear()
Murach’s Visual Basic 2008, C8
© 2008, Mike Murach & Associates, Inc.
Slide 39
Common properties and methods of the List()
class (continued)
Method
Contains(object)
Insert(index, object)
Remove(object)
RemoveAt(index)
BinarySearch(object)
Sort()
Murach’s Visual Basic 2008, C8
Description
Returns a Boolean value that indicates if
the list contains the specified object.
Inserts an element into a list at the
specified index.
Removes the first occurrence of the
specified object from the list.
Removes the element at the specified
index of a list.
Searches a list for a specified object and
returns the index for that object.
Sorts the elements in a list into ascending
order.
© 2008, Mike Murach & Associates, Inc.
Slide 41
Slide 38
Common properties and methods of the List()
class
Property
A statement that creates a list of Decimal
elements
© 2008, Mike Murach & Associates, Inc.
Murach’s Visual Basic 2008, C8
Description
Gets or sets the element at the specified index.
The index for the first item in a list is 0. Since
Item is the default property, its name can be
omitted.
Gets or sets the number of elements the list
can hold.
Gets the number of elements in the list.
Description
Adds an element to the end of a list and
returns the element’s index.
Removes all elements from the list and sets its
Count property to zero.
© 2008, Mike Murach & Associates, Inc.
Slide 40
Code that causes the size of the list of names to be
increased
Dim lastNames As New List(Of String)(3)
' capacity is 3 elements
lastNames.Add("Boehm")
lastNames.Add("Prince")
lastNames.Add("Murach")
lastNames.Add("Taylor")
' capacity is doubled to 6 elements
lastNames Add("Vasquez")
lastNames.Add(
Vasquez )
lastNames.Add("Steelman")
lastNames.Add("Slivkoff")
' capacity is doubled to 12 elements
Murach’s Visual Basic 2008, C8
© 2008, Mike Murach & Associates, Inc.
Slide 42
7
10/5/2008
Code that retrieves the first value from the list
The syntax for retrieving a value from a list
Dim sales1 As Decimal = salesTotals(0)
listName[.Item](index)
Code that creates a list that holds Decimal values
Dim newSalesTotals() As Decimal = {3275.68D, 4398.55D, _
5289.75D, 1933.98D}
Dim salesTotals As New List(Of Decimal)
For Each d As Decimal In newSalesTotals
salesTotals.Add(d)
Next
Murach’s Visual Basic 2008, C8
© 2008, Mike Murach & Associates, Inc.
Slide 43
Code that displays the list in a message box
' sales1 = 3275.68
Code that inserts and removes an element from the
list
salesTotals.Insert(0, 2745.73D)
' insert a new 1st
sales1 = salesTotals(0)
' sales1 =
Dim sales2 As Decimal = salesTotals(1)
' sales2 =
salesTotals.RemoveAt(1)
' remove the 2nd
sales2 = salesTotals(1)
' sales2 =
Murach’s Visual Basic 2008, C8
element
2745.73
3275.68
element
4398.55
© 2008, Mike Murach & Associates, Inc.
Slide 44
Code that checks for an element in the list and
removes it if it exists
Dim salesTotalsString As String = ""
For Each d As Decimal In salesTotals
salesTotalsString &= d.ToString & vbCrLf
Next
MessageBox.Show(salesTotalsString, "Sales Totals")
Dim x As Decimal = 2745.73D
If salesTotals.Contains(x) Then
salesTotals.Remove(x)
End If
The message box that’s displayed
Code that sorts and searches the list
salesTotals.Sort()
Dim sales2Index As Integer = _
salesTotals.BinarySearch(sales2)
' sales2Index = 1
Murach’s Visual Basic 2008, C8
© 2008, Mike Murach & Associates, Inc.
Slide 45
Murach’s Visual Basic 2008, C8
© 2008, Mike Murach & Associates, Inc.
Slide 46
Common methods of the SortedList() class
Common properties of the SortedList() class
Property
Item(key)
Keys
Values
Capacity
Count
Murach’s Visual Basic 2008, C8
Method
Description
Gets or sets the value of the element with the specified
key. Since Item is the default property, its name can
be omitted.
Gets a collection that contains the keys in the list.
Gets a collection that contains the values in the list.
Gets or sets the number of elements the list can hold.
Gives the number of elements in the list.
© 2008, Mike Murach & Associates, Inc.
Slide 47
Add(key, value)
Clear()
ContainsKey(key)
ContainsValue(value)
Murach’s Visual Basic 2008, C8
Description
Adds an element with the specified key
and value to the sorted list.
Removes all elements from the sorted
list.
Returns a Boolean value that indicates
whether
w
e e or
o not
o thee sorted
so ed list
s contains
co
s
the specified key.
Returns a Boolean value that indicates
whether or not the sorted list contains
the specified value.
© 2008, Mike Murach & Associates, Inc.
Slide 48
8
10/5/2008
Common methods of the SortedList() class (cont.)
Properties of the KeyValuePair structure
Method
Property
Remove(key)
RemoveAt(index)
Description
Removes the element with the specified
key from the sorted list.
Removes the element at the specified
index from the sorted list.
Key
Value
Description
The key for the SortedList item.
The value associated with the key.
Code that creates and loads a sorted list
Dim salesList As New SortedList(Of String, Decimal)
salesList.Add("Adams", 3274.68D)
salesList.Add("Finkle", 4398.55D)
salesList.Add("Lewis", 5289.75D)
salesList.Add("Potter", 1933.97D)
Code that looks up a value in the sorted list based
on a key
Dim employeeKey As String = "Lewis"
Dim salesTotal As Decimal = salesList(employeeKey)
Murach’s Visual Basic 2008, C8
© 2008, Mike Murach & Associates, Inc.
Slide 49
Murach’s Visual Basic 2008, C8
© 2008, Mike Murach & Associates, Inc.
Slide 50
Properties and methods of the Queue() class
Code that converts the sorted list to a tabdelimited string
Property
Count
Dim salesTableString As String = ""
For Each employeeSalesEntry _
As KeyValuePair(Of String, Decimal) In salesList
salesTableString &= employeeSalesEntry.Key _
& vbTab & _
employeeSalesEntry.Value & vbCrLf
N t
Next
MessageBox.Show(salesTableString, "Sorted List Totals")
Method
Enqueue(object)
Dequeue()
Clear()
Peek()
Murach’s Visual Basic 2008, C8
© 2008, Mike Murach & Associates, Inc.
Slide 51
Code that uses a queue
Murach’s Visual Basic 2008, C8
Property
Count
Method
Push(object)
Pop()
The message that’s displayed
Clear()
Peek()
© 2008, Mike Murach & Associates, Inc.
© 2008, Mike Murach & Associates, Inc.
Slide 52
Properties and methods of the Stack() class
Dim nameQueue As New Queue(Of String)
nameQueue.Enqueue("Boehm")
nameQueue.Enqueue("Murach")
nameQueue.Enqueue("Vasquez")
Dim nameQueueString As String = ""
Do While nameQueue.Count > 0
nameQueueString &= nameQueue.Dequeue & vbCrLf
Loop
MessageBox.Show(nameQueueString, "Queue")
Murach’s Visual Basic 2008, C8
Description
Gets the number of items in the queue.
Description
Adds the specified object to the end of the
queue.
Gets the object at the front of the queue and
removes it from the queue.
Removes all items from the queue.
Retrieves the next item in the queue without
deleting it.
Slide 53
Murach’s Visual Basic 2008, C8
Description
Gets the number of items in the stack.
Description
Adds the specified object to the top of the stack.
Gets the object at the top of the stack and removes
i from
it
f
the
h stack.
k
Removes all items from the stack.
Retrieves the next item in the stack without
deleting it.
© 2008, Mike Murach & Associates, Inc.
Slide 54
9
10/5/2008
Code that uses a stack
Code that creates an array list that holds decimal
values
Dim nameStack As New Stack(Of String)
nameStack.Push("Boehm")
nameStack.Push("Murach")
nameStack.Push("Vasquez")
Dim nameStackString As String = ""
Do While nameStack.Count > 0
nameStackString &= nameStack.Pop & vbCrLf
Loop
MessageBox.Show(nameStackString, "Stack")
Dim newSalesTotals() As Decimal = {3275.68D, 4398.55D, _
5289.75D, 1933.98D}
Dim salesTotals As New ArrayList
For Each d As Decimal In newSalesTotals
salesTotals.Add(d)
Next
Code that retrieves the first value from the array
list
Th message th
The
that’s
t’ displayed
di l
d
Dim sales1 As Decimal = CDec(salesTotals(0))
' sales1 = 3275.68
Murach’s Visual Basic 2008, C8
© 2008, Mike Murach & Associates, Inc.
Slide 55
salesTotals.Insert(0, 2745.73D)
' insert a new 1st element
sales1 = CDec(salesTotals(0))
' sales1 = 2745.73
Dim sales2 As Decimal = CDec(salesTotals(1))
' sales2 = 3275.68
salesTotals.RemoveAt(1)
' remove the 2nd element
sales2 = CDec(salesTotals(1))
' sales2 = 4398.55
© 2008, Mike Murach & Associates, Inc.
© 2008, Mike Murach & Associates, Inc.
Slide 56
Code that displays the array list in a message box
Code that inserts and removes an element from
the array list
Murach’s Visual Basic 2008, C8
Murach’s Visual Basic 2008, C8
Slide 57
Dim salesTotalsString As String = ""
For Each d As Decimal In salesTotals
salesTotalsString &= d.ToString & vbCrLf
Next
MessageBox.Show(salesTotalsString, "Sales Totals")
The message box that’s displayed
Murach’s Visual Basic 2008, C8
© 2008, Mike Murach & Associates, Inc.
Slide 58
Code that checks for an element in the array list
and removes it if it exists
Dim x As Decimal = 2745.73D
If salesTotals.Contains(x) Then
salesTotals.Remove(x)
End If
Code that sorts and searches the array list
salesTotals Sort()
salesTotals.Sort()
Dim sales2Index As Integer = _
salesTotals.BinarySearch(sales2)
Murach’s Visual Basic 2008, C8
© 2008, Mike Murach & Associates, Inc.
Slide 59
10