VB.Net/Data Structure/ArrayList
Содержание
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>