VB.Net/Data Structure/Array

Материал из VB Эксперт
Перейти к: навигация, поиск

Array IndexOf and LastIndexOf

<source lang="vbnet"> Imports System Public Class MainClass

   Shared Sub Main(ByVal args As String())
       Dim values(10) As Integer
       For i As Integer = 0 To 10
           values(i) = i
       Next i
       Console.WriteLine(Array.IndexOf(values, 6).ToString)
       Console.WriteLine(Array.LastIndexOf(values, 3).ToString)
   End Sub

End Class


      </source>


Array Length Property

<source lang="vbnet"> Imports System Imports System.Diagnostics

Public Class MainClass

   Shared Sub Main()
       Dim arr(99) As Integer
       For i As Integer = 0 To 99
           arr(i) = i * i
       Next i
       Console.WriteLine(arr.Length)
   End Sub

End Class

      </source>


Array Performance Test: One-dimensional array

<source lang="vbnet"> Imports System Imports System.Collections Public Class MainClass

   Shared Sub Main(ByVal args As String())
       Dim start_time As DateTime
       Dim stop_time As DateTime
       Dim elapsed_time As TimeSpan
       " Get the number of items.
       Dim num_items As Integer = 10000
       " One-dimensional array.
       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().ToString )
   End Sub

End Class


      </source>


Array Performance Test: SetValue(i, i)

<source lang="vbnet"> Imports System Imports System.Collections Public Class MainClass

   Shared Sub Main(ByVal args As String())
       Dim start_time As DateTime
       Dim stop_time As DateTime
       Dim elapsed_time As TimeSpan
       " Get the number of items.
       Dim num_items As Integer = 1000000
       " One-dimensional Array.
       Dim array3 As Array = _
           Array.CreateInstance(GetType(Integer), num_items)
       start_time = Now
       For i As Integer = 0 To num_items - 1
           array3.SetValue(i, i)
       Next i
       stop_time = Now
       elapsed_time = stop_time.Subtract(start_time)
       Console.WriteLine( elapsed_time.TotalSeconds().ToString )
   End Sub

End Class


      </source>


Array UBound

<source lang="vbnet">

Public Class MainClass

  Public Shared Sub Main()
       Dim arrMyIntArray1(20) As Integer
       Dim arrMyIntArray2() As Integer = {1, 2, 3, 4}
       Dim arrMyIntArray3(4, 2) As Integer
       Dim arrMyIntArray4(,) As Integer = _
       {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}}
       Dim arrMyIntArray5() As Integer
       Console.WriteLine(CStr(UBound(arrMyIntArray2)))
       arrMyIntArray2.GetUpperBound(0)
       Dim intLoop1 As Integer
       Dim intLoop2 As Integer
       For intLoop1 = 0 To UBound(arrMyIntArray4)
           For intLoop2 = 0 To UBound(arrMyIntArray4, 2)
               Console.WriteLine(arrMyIntArray4(intLoop1, intLoop2).ToString)
           Next
       Next
       
  End Sub

End Class


      </source>


Array Upper Bound and Lower Bound

<source lang="vbnet"> Imports System Public Class MainClass

   Shared Sub Main(ByVal args As String())
       Dim friends() As String = {"1", "2", "3","4", "5"}
       Console.WriteLine("Upper bound: " & UBound(friends), "Array Demo")
       Console.WriteLine("Lower bound: " & LBound(friends), "Array Demo")
       Array.Sort(friends)
       Dim upperBound As Integer = friends.Length
       Dim random As New System.Random()
       Dim n As Integer
       For n = 1 To 10
           Dim index As Integer = random.Next(upperBound)
           Console.WriteLine(index & ": " & friends(index))
       Next
   End Sub
   

End Class

      </source>


A simple class to store in the array

<source lang="vbnet"> Imports System Public Class MainClass

   Shared Sub Main()
        Dim intArray As Integer(  )
        Dim empArray As Employee(  )
        intArray = New Integer(5) {}
        empArray = New Employee(3) {}
        "populate the array
        Dim i As Integer
        "for indices 0 through 3
        For i = 0 To empArray.Length - 1
            empArray(i) = New Employee(i + 5)
            i = i + 1
        Next
   End Sub

End Class

Public Class Employee
    Private empID As Integer
    "constructor
    Public Sub New(ByVal empID As Integer)
        Me.empID = empID
    End Sub
End Class
          
      </source>


Bounded array Example

<source lang="vbnet"> Imports System Imports System.Data Imports System.Collections public class MainClass

  Shared Sub Main()
       Dim X As Array
       Dim I As Integer
       Dim Lengths(0) As Integer
       Dim LowerBounds(0) As Integer
       Lengths(0) = 10
       LowerBounds(0) = 1
       X = Array.CreateInstance(GetType(System.Int32), Lengths, LowerBounds)
       Try
           X.SetValue(5, 0)
       Catch e As Exception
           Console.WriteLine(e.Message)
       End Try
       X.SetValue(6, 1)
       Console.WriteLine(X.GetValue(1))
  End Sub

End Class

      </source>


Declare an Array and reference its member

<source lang="vbnet"> Imports System Public Class MainClass

   Shared Sub Main()
       "Declare an array
       Dim strFriends(4) As String
       "Populate the array
       strFriends(0) = "R"
       strFriends(1) = "B"
       strFriends(2) = "S"
       strFriends(3) = "S"
       strFriends(4) = "K"
       "Add the first array item to the list
       System.Console.WriteLine(strFriends(0))
   End Sub

End Class

      </source>


Declaring, allocating and initializing arrays

<source lang="vbnet"> Imports System Public Class MainClass

   Shared Sub Main(ByVal args As String())
     Dim i As Integer
     Dim array As Integer()          " declare array variable
     Dim array1, array2 As Integer() " declare two arrays
     array = New Integer(9) {} " allocate memory for array
     " initializer list specifies number of elements
     " and value of each element
     array1 = New Integer() {32, 27, 64, 18, 95, _
        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 & "Array" & vbTab & _
        "Array1" & vbTab & "Array2" & vbCrLf )
     " display values in array
     For i = 0 To array.GetUpperBound(0)
        Console.WriteLine( i & vbTab & array(i) & vbTab & _
           array1(i) & vbTab & array2(i) & vbCrLf )
     Next
     Console.WriteLine(  vbCrLf & "The array contains " & _
        array.Length & " elements." )
   End Sub

End Class

      </source>


For Each loops through Array

<source lang="vbnet"> Imports System Public Class MainClass

   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

End Class

Public Class Employee
    Private empID As Integer
    "constructor
    Public Sub New(ByVal empID As Integer)
        Me.empID = empID
    End Sub
End Class


      </source>


Free array"s memory

<source lang="vbnet"> Imports System Imports System.Collections Public Class MainClass

   Shared Sub Main(ByVal args As String())
       " Get the number of items.
       Dim num_items As Integer = 10000
       " One-dimensional array.
       Dim array1(0 To num_items - 1) As Integer
       For i As Integer = 0 To num_items - 1
           array1(i) = i
       Next i
       " Free the first array"s memory.
       Erase array1
   End Sub

End Class


      </source>


Init an Array in Declaration

<source lang="vbnet"> Imports System Public Class MainClass

   Shared Sub Main(ByVal args As String())
       Dim friends() As String = {"1", "2", "3","4", "5"}
       Dim upperBound As Integer = friends.Length
       Dim random As New System.Random()
       Dim n As Integer
       For n = 1 To 10
           Dim index As Integer = random.Next(upperBound)
           Console.WriteLine(index & ": " & friends(index))
       Next
   End Sub
   

End Class

      </source>


Reference an Element in an Array by Index

<source lang="vbnet"> Imports System Public Class MainClass

   Shared Sub Main(ByVal args As String())
       Dim friends(4) As String
       friends(0) = "1"
       friends(1) = "2"
       friends(2) = "3"
       friends(3) = "4"
       friends(4) = "5"
       Console.WriteLine(friends(2))
   End Sub
   

End Class

      </source>


Set Array Element Value by Index

<source lang="vbnet"> Imports System

Public Class MainClass

  Shared Sub Main()
       Dim anArray As Array
       Dim l(0) As Integer
       Dim lowerBounds(0) As Integer
       l(0) = 7
       lowerBounds(0) = 1995
       "creates an array of objects numbered 1995 - 2002
       anArray = Array.CreateInstance(GetType(System.Int32), l, lowerBounds)
       anArray.SetValue(200000, 1995)
       anArray.SetValue(1000000, 2001)
       Console.WriteLine("The entry in position 1995 is " & _
       (anArray.GetValue(1995).ToString))
       Console.WriteLine("The entry in position 2002 is " & _
       (anArray.GetValue(2001).ToString))
  End Sub 

End Class


      </source>


Store your won Class in an Array

<source lang="vbnet"> Imports System Public Class MainClass

   Shared Sub Main(ByVal args As String())
        Dim intArray As Integer()
        Dim empArray As Employee()
        intArray = New Integer(5) {}
        empArray = New Employee(3) {}
        " populate the array
        Dim i As Integer
        " for indices 0 through 3
        For i = 0 To empArray.Length - 1
            empArray(i) = New Employee(i + 5)
            i = i + 1
        Next
   End Sub

End Class

Public Class Employee
    Private empID As Integer
    " constructor
    Public Sub New(ByVal empID As Integer)
        Me.empID = empID
        Console.WriteLine(empID)
    End Sub
End Class
          
      </source>


Two ways to loop through Array

<source lang="vbnet"> Imports System Public Class MainClass

   Shared Sub Main()
    Dim intArray(  ) As Integer
    Dim empArray(  ) As Employee
    intArray = New Integer(5) {}
    empArray = New Employee(3) {}
    "populate the array
    Dim i As Integer
    For i = 0 To empArray.Length - 1
        empArray(i) = New Employee(i + 5)
    Next i
    Console.WriteLine("The Integer array...")
    Dim intValue As Integer
    For Each intValue In intArray
        Console.WriteLine(intValue.ToString(  ))
    Next
    Console.WriteLine("The Employee array...")
    Dim e As Employee
    For Each e In empArray
        Console.WriteLine(e)
    Next
   End Sub

End Class

Public Class Employee
    Private empID As Integer
    "constructor
    Public Sub New(ByVal empID As Integer)
        Me.empID = empID
    End Sub
End Class


      </source>


Use Array CreateInstance to Create Array

<source lang="vbnet"> Imports System Public Class MainClass

   Shared Sub Main(ByVal args As String())
       Dim values As Array = _
           Array.CreateInstance(GetType(Integer), 11)
       For i As Integer = 0 To 10
           values.SetValue(i, i)
       Next i
       Console.WriteLine(Array.IndexOf(values, 6).ToString)
       Console.WriteLine(Array.LastIndexOf(values, 3).ToString)
   End Sub

End Class


      </source>


Use For Each/Next to find a minimum grade

<source lang="vbnet"> Imports System Public Class MainClass

   Shared Sub Main(ByVal args As String())
     Dim gradeArray As Integer(,) = New Integer(,) {{1, 2, 3, 4}, {4, 3, 8, 1}, {7, 9, 8, 1}}
     Dim grade As Integer
     Dim lowGrade As Integer = 100
     For Each grade In gradeArray
        If grade < lowGrade Then
           lowGrade = grade
        End If
     Next
     Console.WriteLine("The minimum grade is: {0}", lowGrade)
   End Sub

End Class

      </source>