Lập trình VB.Net

Kỹ thuật thao tác với Dictionary Collection

Kỹ thuật thao tác với Dictionary Collection trong VB.Net
Được viết bởi Minh Hoàng

Series lập trình VB.NET, ngôn ngữ lập trình hướng đối tượng .NET Framework

Trong bài viết này mình sẽ giới thiệu một số kỹ thuật thao tác với Dictionary Collection trong VB.Net

  1. Kỹ thuật thêm Value có cùng Key vào Dictionary
  2. Một số kỹ thuật thao tác trên Dictionary
1. Kỹ thuật thêm Value có cùng Key vào Dictionary
1. Kỹ thuật thêm Value có cùng Key vào Dictionary
Module MinhHoangBlog

    Sub Main()

        ' Declare List data
        Dim listData As New List(Of String) From
        {
            {"first:1"},
            {"second:2"},
            {"third:1"},
            {"first:2"},
            {"first:3"},
            {"third:2"}
        }

        ' Declare mapData: Key is String, Value is List<int>
        Dim mapData As New Dictionary(Of String, List(Of Integer))

        ' Get data of mapData
        For Each item In listData

            ' Split item by colon
            Dim parts() As String = item.Split( ":" )

            If Not mapData.ContainsKey(parts(0)) Then
                mapData.Add(parts(0), New List(Of Integer))
            End If
            mapData(parts(0)).Add(parts(1))

        Next

        ' Print data of mapData
        For Each kvp As KeyValuePair(Of String, List(Of Integer)) In mapData

            ' Declare Keyis String
            Dim key = kvp.Key

            ' Declare Value is List<int>
            Dim listVal As List(Of Integer) = kvp.Value

            Console.WriteLine("・Key: {0}", key)
            For Each item In listVal
                Console.WriteLine(vbTab & "Value: {0}", item)
            Next

        Next

        Console.ReadKey()

    End Sub

End Module
Kết quả chương trình

Kết quả chương trình

2. Một số kỹ thuật thao tác trên Dictionary
2. Một số kỹ thuật thao tác trên Dictionary

Trong code example này có sử dụng đến kiến thức của Extension method trong VB.Net

Imports System.Runtime.CompilerServices

Module MinhHoangBlog

    Sub Main()

        ' Declare and initialize the value of a dictionary
        Dim mapStudents As New Dictionary(Of Integer, String) From
        {
            {123, "Tom"},
            {444, "Jerry"},
            {555, "Peter"}
        }

        ' Add new data to dictionary
        mapStudents.Add( 666, "Marry" )

        ' Print Value based on Key
        Console.WriteLine(mapStudents(444))  'Output: Jerry

        ' New Line
        Console.WriteLine()

        ' Print Key and Value
        For Each stu In mapStudents
            Console.WriteLine(stu.Key & " = " & stu.Value)
        Next


        ' Get Key-Value using LINQ
        Dim result1 As KeyValuePair(Of Integer, String) = mapStudents.Single(Function(item) item.Key = 444)

        ' Get Key-Value using extension method
        Dim result2 As KeyValuePair(Of Integer, String) = mapStudents.GetValueFromKey(444)

        ' Update value of map data based on key
        Dim searchKey As Integer = result2.Key
        If mapStudents.ContainsKey(searchKey) Then
            ' 値更新
            mapStudents(searchKey) = "minhhn.com"
        End If

        ' New Line
        Console.WriteLine()

        ' Iterate in Dictionary
        For Each kvp As KeyValuePair(Of Integer, String) In mapStudents
            Dim key As Integer = kvp.Key
            Dim val As String = kvp.Value

            ' Do whatever you want with key, val:
            Console.WriteLine("{0} = {1}", key, val)
        Next


        ' Loop by key
        For Each iKey As Integer In mapStudents.Keys
            Dim val As String = mapStudents(iKey)
            '...
            '.....Write logic codes Here....
        Next

        Console.ReadKey()

    End Sub

    ' Extension method
    ''' <summary>データマップのキーを基にして値を取得する</summary>
    ''' <param name="mapData">データマップ</param>
    ''' <param name="key">キー</param>
    ''' <returns>値</returns>
    <Extension()>
    Public Function GetValueFromKey(Of TKey, TValue)(mapData As Dictionary(Of TKey, TValue), key As TKey) As KeyValuePair(Of TKey, TValue)
        Dim value As TValue
        If mapData.TryGetValue(key, value) Then
            Return New KeyValuePair(Of TKey, TValue)(key, value)
        End If
        Return Nothing
    End Function

End Module
Kết quả chương trình

Kết quả chương trình

Cảm ơn bạn đã theo dõi. Đừng ngần ngại hãy cùng thảo luận với chúng tôi! Minh Hoàng Blog | Nào cùng vui hehe


Giới thiệu

Minh Hoàng

Xin chào, tôi là Hoàng Ngọc Minh, hiện đang làm BrSE, tại công ty Toyota, Nhật Bản. Những gì tôi viết trên blog này là những trải nghiệm thực tế tôi đã đúc rút ra được trong cuộc sống, quá trình học tập và làm việc. Các bài viết được biên tập một cách chi tiết, linh hoạt để giúp người đọc có thể tiếp cận một cách dễ dàng nhất. Hi vọng nó sẽ có ích hoặc mang lại một góc nhìn khác cho bạn[…]

Bình luận của bạn

Be the First to Comment!

avatar
wpDiscuz
Chúc bạn có một cuộc sống ngoại hạng!