Mega Code Archive

 
Categories / VB.Net / Data Structure
 

Store Class in a Collection and Retrieve by Name

Imports System Imports System.Collections   Public Class MainClass     Shared Sub Main(ByVal args As String())                                Dim intCollection As New Collection( )              Dim empCollection As New Collection( )              Dim empCollection2 As New Collection( )              ' populate the Collections              Dim i As Integer              For i = 0 To 4                  empCollection.Add(New EnumerableClass("A", "B"))                  intCollection.Add((i * 5))              Next i              ' add key/value pairs              empCollection2.Add(New EnumerableClass("A", "B"), "A B")              empCollection2.Add(New EnumerableClass("C", "D"), "C D")              empCollection2.Add(New EnumerableClass("E", "F"), "E F")              ' print each member of the array              For Each i In intCollection                  Console.Write("{0} ", i.ToString( ))              Next i              Console.WriteLine( )              Console.WriteLine("Employee collection...")              Dim e As EnumerableClass              For Each e In empCollection                  Console.Write("{0} ", e.ToString( ))              Next e              Console.WriteLine( )              Console.WriteLine("Employee collection 2...")              For Each e In empCollection2                  Console.Write("{0} ", e.ToString( ))              Next e              Console.WriteLine( )              ' retrieve an Employee by key              Dim emp As EnumerableClass              emp = empCollection2.Item("A B")              Console.WriteLine( _                " empID {0}", emp.ToString( ))              ' note that indexing is 1-based (rather than zero based)              emp = empCollection2.Item(1)              Console.WriteLine( _                "Index(1) retrieved empID {0}", emp.ToString( ))     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