' Module1.vb ' Test some Hashtable and ArrayList ideas ' RJM Programming ' December, 2014 Module Module1 Dim contactlistHT As Hashtable Dim contactlistHTEmail As Hashtable Dim sortedName As ArrayList Dim sortedEmail As ArrayList Dim sortedNameEmail As ArrayList Dim sortedEmailName As ArrayList Private Function getmeNominatedName(ByVal n As Integer) As String System.IO.File.AppendAllText("c:\ContactList.csv", "Name " + (n + 1).ToString() + " of a sorted list (of " + sortedName.Count.ToString() + ") is: " + sortedName(n) + vbLf) Return sortedName(n) End Function Private Function getmeNominatedNameEmail(ByVal n As Integer) As String Dim ours As String = sortedNameEmail(n) System.IO.File.AppendAllText("c:\ContactList.csv", "Name " + (n + 1).ToString() + " of a sorted list (of " + sortedNameEmail.Count.ToString() + ") has the email: " + ours.Substring(ours.IndexOf(",")).Replace(",", "") + vbLf) Return ours End Function Private Function getmeNominatedEmail(ByVal n As Integer) As String System.IO.File.AppendAllText("c:\ContactList.csv", "Email " + (n + 1).ToString() + " of a sorted list (of " + sortedEmail.Count.ToString() + ") is: " + sortedEmail(n) + vbLf) Return sortedEmail(n) End Function Private Function getmeNominatedEmailName(ByVal n As Integer) As String Dim ours As String = sortedEmailName(n) System.IO.File.AppendAllText("c:\ContactList.csv", "Email " + (n + 1).ToString() + " of a sorted list (of " + sortedEmailName.Count.ToString() + ") has the name: " + ours.Substring(ours.IndexOf(",")).Replace(",", "") + vbLf) Return ours End Function Private Function getmeLastEmail() As String System.IO.File.AppendAllText("c:\ContactList.csv", "Last email of a sorted list (of " + sortedEmail.Count.ToString() + ") is: " + sortedEmail(sortedEmail.Count - 1) + vbLf) Return sortedEmail(sortedEmail.Count - 1) End Function Private Function getmeLastEmailName() As String Dim ours As String = sortedEmailName(sortedEmailName.Count - 1) System.IO.File.AppendAllText("c:\ContactList.csv", "Last email of a sorted list (of " + sortedEmailName.Count.ToString() + ") has the name: " + ours.substring(ours.indexOf(",")).replace(",", "") + vbLf) Return ours End Function Private Function getmeFirstEmail() As String System.IO.File.AppendAllText("c:\ContactList.csv", "First email of a sorted list (of " + sortedEmail.Count.ToString() + ") is: " + sortedEmail(0) + vbLf) Return sortedEmail(0) End Function Private Function getmeFirstEmailName() As String Dim ours As String = sortedEmailName(0) System.IO.File.AppendAllText("c:\ContactList.csv", "First email of a sorted list (of " + sortedEmailName.Count.ToString() + ") has the name: " + ours.substring(ours.indexOf(",")).replace(",", "") + vbLf) Return ours End Function Private Function getmeEmailForName(ByVal ourn As String) As String System.IO.File.AppendAllText("c:\ContactList.csv", "Email for " + ourn + " is: " + contactlistHT(ourn) + vbLf) Return contactlistHT(ourn) End Function Private Function getmeNameForEmail(ByVal ourn As String) As String System.IO.File.AppendAllText("c:\ContactList.csv", "Name for " + ourn + " is: " + contactlistHTEmail(ourn) + vbLf) Return contactlistHTEmail(ourn) End Function Private Function getmeLastName() As String System.IO.File.AppendAllText("c:\ContactList.csv", "Last name of a sorted list (of " + sortedName.Count.ToString() + ") is: " + sortedName(sortedName.Count - 1) + vbLf) Return sortedName(sortedName.Count - 1) End Function Private Function getmeLastNameEmail() As String Dim ours As String = sortedNameEmail(sortedNameEmail.Count - 1) System.IO.File.AppendAllText("c:\ContactList.csv", "Last name of a sorted list (of " + sortedNameEmail.Count.ToString() + ") has the email: " + ours.substring(ours.indexOf(",")).replace(",", "") + vbLf) Return ours End Function Private Function getmeFirstName() As String System.IO.File.AppendAllText("c:\ContactList.csv", "First name of a sorted list (of " + sortedName.Count.ToString() + ") is: " + sortedName(0) + vbLf) Return sortedName(0) End Function Private Function getmeFirstNameEmail() As String Dim ours As String = sortedNameEmail(0) System.IO.File.AppendAllText("c:\ContactList.csv", "First name of a sorted list (of " + sortedNameEmail.Count.ToString() + ") has the email: " + ours.substring(ours.indexOf(",")).replace(",", "") + vbLf) Return ours End Function Sub Main() Dim stringNE As String = " " Dim stringN As String = "" Dim stringE As String = "" Dim spare As String Dim nameOfInterest As String = "Smith" Dim num As Integer = 0 Dim i As Integer ' Initialize ... contactlistHT = New Hashtable() contactlistHTEmail = New Hashtable() sortedName = New ArrayList() sortedEmail = New ArrayList() sortedNameEmail = New ArrayList() sortedEmailName = New ArrayList() ' Gather data ... Do While (stringNE <> "") stringNE = InputBox("Please enter Name,Email " + (num + 1).ToString() + " exits: ", "Contact List", "") If (stringNE.Contains(",")) Then stringN = stringNE.Substring(0, stringNE.IndexOf(",")).Replace(",", "") stringE = stringNE.Replace(stringN + ",", "").TrimStart() ElseIf (stringNE <> "") Then stringN = stringNE stringE = InputBox("Please enter Email " + (num + 1).ToString() + " exits: ", "Contact List", "") End If If (stringN <> "" And stringE <> "") Then contactlistHT(stringN) = stringE contactlistHTEmail(stringE) = stringN sortedName.Add(stringN) sortedEmail.Add(stringE) spare = stringN + "," + stringE sortedNameEmail.Add(spare) spare = stringE + "," + stringN sortedEmailName.Add(spare) num = num + 1 Else stringNE = "" End If Loop ' Sort ArrayList collections ... sortedName.Sort() sortedEmail.Sort() sortedNameEmail.Sort() sortedEmailName.Sort() If num > 0 Then spare = "" For i = 1 To sortedNameEmail.Count If (spare <> sortedNameEmail(i - 1).ToString()) Then spare = sortedNameEmail(i - 1).ToString() If (i > 1) Then System.IO.File.AppendAllText("c:\\ContactList.csv", spare + vbLf) Else System.IO.File.WriteAllText("c:\\ContactList.csv", spare + vbLf) End If End If Next Dim ans As String = InputBox(System.IO.File.ReadAllText("c:\\ContactList.csv"), "Your Sorted Contact List", "") If ((ans + "Y").substring(0, 1).ToUpper() <> "N") Then System.IO.File.AppendAllText("c:\\ContactList.csv", vbLf + vbLf) ' Report findings ... Dim smithsemail As String = getmeEmailForName(nameOfInterest) getmeFirstName() getmeFirstNameEmail() If (sortedName.Count >= 3) Then getmeNominatedName(2) getmeNominatedNameEmail(2) End If getmeLastName() getmeLastNameEmail() getmeFirstEmail() getmeFirstEmailName() If (sortedEmail.Count >= 3) Then getmeNominatedEmail(2) getmeNominatedEmailName(2) End If getmeLastEmail() getmeLastEmailName() If (1 = 2) Then Dim smithsname As String = getmeNameForEmail(smithsemail) End If System.IO.File.AppendAllText("c:\\ContactList.csv", "Email for " + nameOfInterest + " is: " + smithsemail + vbLf) Dim answer As String = InputBox(System.IO.File.ReadAllText("c:\\ContactList.csv"), "Your Sorted Contact List and Report", "") End If End If End Sub End Module