VB.Net Tutorial/Collections/Array
Версия от 16:40, 26 мая 2010; (обсуждение)
Содержание
- 1 Array Clone
- 2 Array declaration
- 3 Array length: negative
- 4 Array Resize
- 5 Assing array element value by using index
- 6 Computing sum of elements in array.
- 7 Declaring and allocating an array
- 8 Display the contents of a single-dimension array
- 9 Initialize Array element during declaration
- 10 Initializing arrays
- 11 Insert element in the middle of an Array
- 12 One dimesional array performance
- 13 Reorder the elements of an array in a random order
- 14 Swap elements in an array
- 15 Two dimesional array performance
- 16 Use For loop to initialize Integer array
Array Clone
Public Class Tester
Public Shared Sub Main
Dim arrayA() As String = {"One", "Two", "Three", "Four", "Five", "Six"}
Console.WriteLine(Join(arrayA, ","))
Dim arrayB() As String = {"A", "B", "C", "D", "E", "E", "F", "G", "H"}
Console.WriteLine(Join(arrayB, ","))
" ----- Make a reference copy.
Dim arrayC() As String = arrayA
Console.WriteLine(Join(arrayC, ","))
" ----- Make a full, unique copy of all elements.
Dim arrayD() As String = arrayA.Clone
Console.WriteLine(Join(arrayD, ","))
End Sub
End Class
One,Two,Three,Four,Five,Six A,B,C,D,E,E,F,G,H One,Two,Three,Four,Five,Six One,Two,Three,Four,Five,Six
Array declaration
Option Strict On
Public Module Arrays
Public Sub Main
Dim arr As Array
Dim int() As Integer = {12, 16, 20, 24, 28, 32}
arr = CType(int, Array)
Dim byFours() As Integer = {12, 24, 36, 48}
Dim names() As String = {"K", "S", "S", "D", "N"}
Dim miscData() As Object = {"this", 12d, 16ui, "a"c}
Dim objArray() As Object
miscData = names
Dim myArray1a() As Integer " Uninitialized array
Dim myArray1b As Integer() " Uninitialized array
Dim myArray2(10) As Integer " 1-dimensional array with 11 elements
Dim Employees1( , ) As Object " Uninitialized 2-D array
Dim Employees(200, 2) As Object " 2-D array with 201 and 3 elements
Dim jagged1(9)() As String
Dim jagged2()() As String = New String(9)() {}
Dim myArray1arr As Array
Dim myArray2a As Array = Array.CreateInstance(GetType(Integer), 10)
Dim members() As Integer = {3, 10}
Dim myArray3a As Array = Array.CreateInstance(GetType(Integer), members)
End Sub
End Module
Array length: negative
Option Strict On
Public Module ValidArray
Public Sub Main()
Dim emptyArray(-1) As String
For Each element As String In emptyArray
Console.WriteLine(element)
Next
End Sub
End Module
Array Resize
Public Class Tester
Public Shared Sub Main
Dim result As New System.Text.StringBuilder
Dim arrayInsert() As String = {"O", "A", "G", "B", "B"}
" ----- Show the contents before insertion.
result.AppendLine("Before insertion:")
For Each fruit As String In arrayInsert
result.AppendLine(fruit)
Next fruit
" ----- Insert more fruit.
InsertArrayElement(Of String)(arrayInsert, 2, "Lemons")
" ----- Show the contents after insertion.
result.AppendLine()
result.AppendLine("After insertion:")
For Each fruit As String In arrayInsert
result.AppendLine(fruit)
Next fruit
Console.WriteLine(result.ToString())
End Sub
Public Shared Sub InsertArrayElement(Of T)( _
ByRef sourceArray() As T, _
ByVal insertIndex As Integer, _
ByVal newValue As T)
Dim newPosition As Integer
Dim counter As Integer
newPosition = insertIndex
If (newPosition < 0) Then newPosition = 0
If (newPosition > sourceArray.Length) Then _
newPosition = sourceArray.Length
Array.Resize(sourceArray, sourceArray.Length + 1)
For counter = sourceArray.Length - 2 To newPosition Step -1
sourceArray(counter + 1) = sourceArray(counter)
Next counter
sourceArray(newPosition) = newValue
End Sub
End Class
Before insertion: O A G B B After insertion: O A Lemons G B B
Assing array element value by using index
public class Test
public Shared Sub Main
Dim arySalaries(15) As Integer
Dim aryNames(15) As String
Dim intCounter As Integer
aryNames(0) = "J"
arySalaries(0) = 34000
aryNames(1) = "B"
arySalaries(1) = 62000
"Set other array elements here.
aryNames(15) = "P"
arySalaries(15) = 10300
"Show the elements of the array.
For intCounter = 0 To 15
Console.WriteLine("Array element: " & intCounter & vbCrLf & _
"Name: " & aryNames(intCounter) & vbCrLf & _
"Salary: " & arySalaries(intCounter))
Next intCounter
End Sub
End class
Array element: 0 Name: J Salary: 34000 Array element: 1 Name: B Salary: 62000 Array element: 2 Name: Salary: 0 Array element: 3 Name: Salary: 0 Array element: 4 Name: Salary: 0 Array element: 5 Name: Salary: 0 Array element: 6 Name: Salary: 0 Array element: 7 Name: Salary: 0 Array element: 8 Name: Salary: 0 Array element: 9 Name: Salary: 0 Array element: 10 Name: Salary: 0 Array element: 11 Name: Salary: 0 Array element: 12 Name: Salary: 0 Array element: 13 Name: Salary: 0 Array element: 14 Name: Salary: 0 Array element: 15 Name: P Salary: 10300
Computing sum of elements in array.
Module Tester
Sub Main()
Dim array As Integer() = New Integer() _
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
Dim total As Integer = 0, i As Integer = 0
For i = 0 To array.GetUpperBound(0)
total += array(i)
Next
Console.WriteLine("Total of array elements: " & total)
End Sub
End Module
Total of array elements: 55
Declaring and allocating an array
Module Tester
Sub Main()
Dim i As Integer
Dim array As Integer() " declare array variable
array = New Integer(9) {} " allocate memory for array
Console.WriteLine("Subscript " & vbTab & "Value")
For i = 0 To array.GetUpperBound(0)
Console.WriteLine( i & vbTab & array(i))
Next
Console.WriteLine("The array contains " & _
array.Length & " elements.")
End Sub
End Module
Subscript Value 0 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 The array contains 10 elements.
Display the contents of a single-dimension array
Public Class Tester
Public Shared Sub Main
Dim sourceArray() As Integer = {1, 2, 3}
Dim result As New System.Text.StringBuilder
Dim counter As Integer
result.Append("{")
For counter = 0 To sourceArray.Length - 1
result.Append(sourceArray(counter).ToString())
If (counter < (sourceArray.Length - 1)) Then result.Append(",")
Next counter
result.Append("}")
Console.WriteLine(result.ToString())
End Sub
End Class
{1,2,3}
Initialize Array element during declaration
Option Strict On
Imports System
Public Class Employee
Private empID As Integer
Public Sub New(ByVal empID As Integer)
Me.empID = empID
End Sub
Public Overrides Function ToString( ) As String
Return empID.ToString( )
End Function
End Class
Class Tester
Public Shared Sub Main( )
Dim intArray As Integer( ) = {2, 4, 6, 8, 10}
Dim empArray As Employee( ) = _
{New Employee(5), New Employee(7), New Employee(9)}
Console.WriteLine("The Integer array...")
Dim theInt As Integer
For Each theInt In intArray
Console.WriteLine(theInt.ToString( ))
Next theInt
Console.WriteLine("The employee array...")
Dim e As Employee
For Each e In empArray
Console.WriteLine(e.ToString( ))
Next e
End Sub "Run
End Class
The Integer array... 2 4 6 8 10 The employee array... 5 7 9
Initializing arrays
Module Tester
Sub Main()
Dim i As Integer
Dim array1, array2 As Integer() " declare two arrays
" initializer list specifies number of elements
" and value of each element
array1 = New Integer() {2, 7, 4, 8, 5, 14, 90, 70, 60, 37}
" allocate array2 based on length of array1
array2 = New Integer(array1.GetUpperBound(0)) {}
" set values in array2 by a calculation
For i = 0 To array2.GetUpperBound(0)
array2(i) = 2 + 2 * i
Next
Console.WriteLine("Subscript " & vbTab & "Array1" & vbTab & _
"Array2")
" display values for both arrays
For i = 0 To array1.GetUpperBound(0)
Console.WriteLine(i & vbTab & array1(i) & vbTab & array2(i))
Next
End Sub
End Module
Subscript Array1 Array2 0 2 2 1 7 4 2 4 6 3 8 8 4 5 10 5 14 12 6 90 14 7 70 16 8 60 18 9 37 20
Insert element in the middle of an Array
Public Class Tester
Public Shared Sub Main
Dim result As New System.Text.StringBuilder
Dim arrayInsert() As String = {"O", "A", "G", "B", "B"}
" ----- Show the contents before insertion.
result.AppendLine("Before insertion:")
For Each fruit As String In arrayInsert
result.AppendLine(fruit)
Next fruit
" ----- Insert more fruit.
InsertArrayElement(Of String)(arrayInsert, 2, "Lemons")
" ----- Show the contents after insertion.
result.AppendLine()
result.AppendLine("After insertion:")
For Each fruit As String In arrayInsert
result.AppendLine(fruit)
Next fruit
Console.WriteLine(result.ToString())
End Sub
Public Shared Sub InsertArrayElement(Of T)( _
ByRef sourceArray() As T, _
ByVal insertIndex As Integer, _
ByVal newValue As T)
Dim newPosition As Integer
Dim counter As Integer
newPosition = insertIndex
If (newPosition < 0) Then newPosition = 0
If (newPosition > sourceArray.Length) Then _
newPosition = sourceArray.Length
Array.Resize(sourceArray, sourceArray.Length + 1)
For counter = sourceArray.Length - 2 To newPosition Step -1
sourceArray(counter + 1) = sourceArray(counter)
Next counter
sourceArray(newPosition) = newValue
End Sub
End Class
Before insertion: O A G B B After insertion: O A Lemons G B B
One dimesional array performance
public class Test
public Shared Sub Main
Dim start_time As DateTime
Dim stop_time As DateTime
Dim elapsed_time As TimeSpan
Dim num_items As Integer = 10000
Dim array1(0 To num_items - 1) As Integer
start_time = Now
For i As Integer = 0 To num_items - 1
array1(i) = i
Next i
stop_time = Now
elapsed_time = stop_time.Subtract(start_time)
Console.WriteLine(elapsed_time.TotalSeconds())
Erase array1
End Sub
End class
0
Reorder the elements of an array in a random order
Public Class Tester
Public Shared Sub Main
Dim arrayShuffle() As String = {"A", "B", "C", "D", "E"}
For Each fruit As String In arrayShuffle
Console.WriteLine(fruit)
Next fruit
Shuffle(arrayShuffle)
For Each fruit As String In arrayShuffle
Console.WriteLine(fruit)
Next fruit
End Sub
Public Shared Sub Shuffle(ByRef shuffleArray() As Object)
Dim counter As Integer
Dim newPosition As Integer
Dim shuffleMethod As New Random
Dim tempObject As Object
For counter = 0 To shuffleArray.Length - 1
newPosition = shuffleMethod.Next(0, shuffleArray.Length - 1)
tempObject = shuffleArray(counter)
shuffleArray(counter) = shuffleArray(newPosition)
shuffleArray(newPosition) = tempObject
Next counter
End Sub
End Class
A B C D E B A E C D
Swap elements in an array
Public Class Tester
Public Shared Sub Main
Dim result As New System.Text.StringBuilder
Dim arraySwap() As String = {"A", "B", "C", "D", "E"}
Swap(arraySwap, 1, 3)
For Each fruit As String In arraySwap
Console.WriteLine(fruit)
Next fruit
End Sub
Public Shared Sub Swap(ByRef swapArray() As Object, _
ByVal first As Integer, ByVal second As Integer)
Dim tempObject As Object
tempObject = swapArray(first)
swapArray(first) = swapArray(second)
swapArray(second) = tempObject
End Sub
End Class
A D C B E
Two dimesional array performance
public class Test
public Shared Sub Main
Dim start_time As DateTime
Dim stop_time As DateTime
Dim elapsed_time As TimeSpan
Dim num_items As Integer = 10000
" Two-dimensional array.
Dim array2(0 To 0, 0 To num_items - 1) As Integer
start_time = Now
For i As Integer = 0 To num_items - 1
array2(0, i) = i
Next i
stop_time = Now
elapsed_time = stop_time.Subtract(start_time)
Console.WriteLine(elapsed_time.TotalSeconds())
Erase array2
End Sub
End class
0
Use For loop to initialize Integer array
Module Module1
Sub Main()
Dim Students(50) As Integer
Dim I As Integer
For I = 0 To 50
Students(I) = I
Next
For I = 0 To 50
Console.WriteLine(Students(I))
Next
End Sub
End Module
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50