The faster way (with the best system performance) to count how many times a particular value is repeated in a List of items, it’s like this
Const chars As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" Dim rnd As New Random() 'create a long list of random letters Dim random_letters As List(Of String) = Enumerable.Range(1, 100000).Select(Function(i) chars(rnd.Next(0, chars.Length)).ToString).ToList 'create a long list of random numbers Dim random_numbers As List(Of Integer) = Enumerable.Range(1, 100000).Select(Function(i) rnd.Next(100000)).ToList() 'get a lookup table Dim lookup_table = random_letters.GetLookupTable 'count how many times a particular value "B" is repeated in the lookup table of random_letters List Dim count As Integer = lookup_table.CountValue("B")
To do that, You have to add the following two extension methods, optimized for the best performance, to my .Net module (at http://www.maxvergelli.com/useful-extension-methods-for-string-net-class-with-support-of-intellisense/) that extends the String class
'CountValue() count how many times a particular value is repeated in a lookup table _ Public Function CountValue(Of T)(ByRef lookup_table As Dictionary(Of T, Int32), ByRef value As T) As Integer Dim c As Integer = 0 lookup_table.TryGetValue(value, c) Return c End Function 'get a lookup table from a List of items _ Public Function GetLookupTable(Of T)(ByRef list As List(Of T)) As Dictionary(Of T, Int32) Dim table As New Dictionary(Of T, Integer) For Each s As T In list Dim count As Int32 = 0 If table.TryGetValue(s, count) Then table(s) = count + 1 Else table(s) = 1 End If Next Return table End Function
Enjoy,
Max 🙂
Leave a Reply