VB.Net/Data Structure/ArrayList

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

Add element to an ArrayList and get its Length

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

Public Class MainClass

  Shared Sub Main()
   Dim myList As New ArrayList()
   myList.Add("aa")
   Console.WriteLine("You entered " & myList.Count() & " ITEMS.")
  End Sub 

End Class


      </source>


ArrayList: add, remove, IndexOf, Count, Contains, TrimToSize, GetEnumerator

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

  Public Shared Sub Main()
     Dim arrayList As arrayList = New arrayList(1)
     arrayList.Add("a")
     try
         Console.WriteLine(arrayList(0))
     Catch outOfRange As ArgumentOutOfRangeException
         Console.WriteLine(outOfRange.ToString())
     End Try
     Console.WriteLine(arrayList.Count)
     Console.WriteLine(arrayList.Contains("a"))
     
     Console.WriteLine(arrayList.IndexOf("a"))
     arrayList.Remove("a")
     arrayList.TrimToSize()
     Console.WriteLine(arrayList.Capacity)
     arrayList.Add("a")
     Dim enumerator As IEnumerator = arrayList.GetEnumerator()
     While enumerator.MoveNext()
        Console.WriteLine(enumerator.Current )
     End While 
  End Sub

End Class


      </source>


Convert ArrayList to Array

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

Public Class MainClass

   Shared Sub Main(ByVal args As String())
       Dim array_list As New ArrayList
       array_list.Add("A")
       array_list.Add("B")
       array_list.Add("C")
       " Array of objects.
       Dim obj_array() As Object
       obj_array = array_list.ToArray()
       " Array of strings.
       Dim string_array() As String
       string_array = DirectCast(array_list.ToArray(GetType(String)), String())
       " Array object of objects.
       Dim astring_array As Array
       astring_array = array_list.ToArray()
   End Sub

End Class


      </source>


Store different Class in an ArrayList

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

Public Class MainClass

   Shared Sub Main(ByVal args As String())
       Dim array_list As New ArrayList
       array_list.Add("A")
       array_list.Add(1001)
       array_list.Add("")
       
       For Each obj As Object In array_list
           Console.WriteLine(obj.GetType.ToString)
       Next obj
   End Sub

End Class


      </source>


Store Objects into ArrayList

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

   Shared Sub Main()
      Dim empArray As New ArrayList(  )
      Dim intArray As New ArrayList(  )
      "populate the arraylists
      Dim i As Integer
      For i = 0 To 4
          empArray.Add(New Employee(i + 100))
          intArray.Add((i * 5))
      Next i
      "print each member of the array
      For Each i In intArray
          Console.Write("{0} ", i.ToString(  ))
      Next i
      Console.WriteLine(ControlChars.Lf)
      "print each employee
      Dim e As Employee
      For Each e In empArray
          Console.Write("{0} ", e.ToString(  ))
      Next e
      Console.WriteLine(ControlChars.Lf)
      Console.WriteLine("empArray.Capacity: {0}", empArray.Capacity)
  End Sub

End Class

    Public Class Employee
        Private myEmpID As Integer
        Public Sub New(ByVal empID As Integer)
            Me.myEmpID = empID
        End Sub "New
        Public Overrides Function ToString(  ) As String
            Return myEmpID.ToString(  )
        End Function "ToString
        Public Property EmpID(  ) As Integer
            Get
                Return myEmpID
            End Get
            Set(ByVal Value As Integer)
                myEmpID = Value
            End Set
        End Property
    End Class "Employee
          
      </source>


Use ArrayList to Store your own class

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

Public Class MainClass

   Shared Sub Main(ByVal args As String())
            Dim empArray As New ArrayList( )
            Dim intArray As New ArrayList( )
            " populate the arraylists
            Dim i As Integer
            For i = 0 To 4
                empArray.Add(New EnumerableClass("A", "B"))
                intArray.Add((i * 5))
            Next i
            " print each member of the array
            For Each i In intArray
                Console.Write("{0} ", i.ToString( ))
            Next i
            Console.WriteLine(ControlChars.Lf)
            " print each employee
            Dim e As EnumerableClass
            For Each e In empArray
                Console.Write("{0} ", e.ToString( ))
            Next e
            Console.WriteLine(ControlChars.Lf)
            Console.WriteLine("empArray.Capacity: {0}", empArray.Capacity)
   End Sub

End Class

    Public Class EnumerableClass : Implements IEnumerable
        Private strings( ) As String
        Private ctr As Integer = 0
        Private Class MyEnumerator
            Implements IEnumerator
            Private currentListBox As EnumerableClass
            Private index As Integer
            Public Sub New(ByVal currentListBox As EnumerableClass)
                Me.currentListBox = currentListBox
                index = -1
            End Sub
            Public Function MoveNext( ) As Boolean _
              Implements IEnumerator.MoveNext
                index += 1
                If index >= currentListBox.strings.Length Then
                    Return False
                Else
                    Return True
                End If
            End Function
            Public Sub Reset( ) _
              Implements IEnumerator.Reset
                index = -1
            End Sub
            Public ReadOnly Property Current( ) As Object _
            Implements IEnumerator.Current
                Get
                    Return currentListBox(index)
                End Get
            End Property
        End Class  " end nested class
        Public Function GetEnumerator( ) As IEnumerator _
        Implements IEnumerable.GetEnumerator
            Return New MyEnumerator(Me)
        End Function
        Public Sub New( _
          ByVal ParamArray initialStrings( ) As String)
            ReDim strings(7)
            Dim s As String
            For Each s In initialStrings
                strings(ctr) = s
                ctr += 1
            Next
        End Sub
        Public Sub Add(ByVal theString As String)
            strings(ctr) = theString
            ctr += 1
        End Sub
        Default Public Property Item( _
          ByVal index As Integer) As String
            Get
                If index < 0 Or index >= strings.Length Then
                    " handle bad index
                    Exit Property
                End If
                Return strings(index)
            End Get
            Set(ByVal Value As String)
                strings(index) = Value
            End Set
        End Property
        Public Function GetNumEntries( ) As Integer
            Return ctr
        End Function
    End Class


      </source>