homelinksBlijf op de hoogte van de recente aanpassingen op vbvoorbeelden!
Visual Basic 2010 Voorbeelden

visual basic 2010 broncode voorbeelden

Microsoft Visual Studio 2010Microsoft Developers Network - Visual BasicMicrosoft .NET Framework

23.14. System.Collections.Generic.HashSet(Of T)

Print Email Deel op Facebook Deel op Twitter

Dit artikel is gepubliceerd op zondag 31 juli 2011 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.

23.14.1. System.Collections.Generic.HashSet(Of T)

Indien je van een verzameling van unieke waardes ( "set" ) unies, doorsnedes en verschillen wil maken van of met andere sets, kan je aan de slag met het type System.Collections.Generic.HashSet(Of T).

De elementen van een HashSet(Of T) zijn uniek en niet gesorteerd.

Enkele set operaties worden in onderstaand voorbeeld geïllustreerd :
Visual Basic 2010 Broncode
Option Strict On
Option Explicit Off

Imports System.Collections
Imports System.Collections.Generic
Imports System.Linq

Public Class HashSetOfTExample
    Public Shared Sub Main()
        Dim hashSet1 As New HashSet(Of Integer)(New Integer() {2, 4, 6, 8})
        '
        Dim list1 As IEnumerable(Of Integer) = New Integer() {6, 7, 8, 9}
        Dim list2 As IEnumerable(Of Integer) = New Integer() {2, 4, 8}
        Dim list3 As IEnumerable(Of Integer) = New Integer() {2, 4, 6}
        Dim list4 As IEnumerable(Of Integer) = New Integer() {2}
        '
        hashSet1.IntersectWith(list1)
        Print(hashSet1) ' 6 8
        '
        hashSet1.UnionWith(list2)
        Print(hashSet1) ' 4 2 6 8
        '
        hashSet1.ExceptWith(list1)
        Print(hashSet1) ' 4 2
        '
        Console.WriteLine(hashSet1.IsSubsetOf(list3))   ' True
        Console.WriteLine(hashSet1.IsSupersetOf(list4)) ' True
        '
        Console.ReadLine()
    End Sub
    Public Shared Sub Print(ByVal collection As IEnumerable)
        For Each element As Object In collection
            Console.Write(element.ToString() & " ")
        Next
        Console.WriteLine()
    End Sub
End Class
Console Application Output
6 8
4 2 6 8
4 2
True
True

23.14.2. LINQ Set Operations

Een aantal van de in bovenstaand voorbeeld gedemonstreerde set operaties kunnen we ook aan de hand van LINQ query methods :
Visual Basic 2010 Broncode
Public Class LINQSetOperationsExample
    Public Shared Sub Main()
        Dim list0 As IEnumerable(Of Integer) = New Integer() {2, 4, 6, 8}
        '
        Dim list1 As IEnumerable(Of Integer) = New Integer() {6, 7, 8, 9}
        Dim list2 As IEnumerable(Of Integer) = New Integer() {2, 4, 8}
        Dim list3 As IEnumerable(Of Integer) = New Integer() {2, 4, 6}
        Dim list4 As IEnumerable(Of Integer) = New Integer() {2}
        '
        list0 = list0.Intersect(list1)
        Print(list0) ' 6 8
        '
        list0 = list0.Union(list2)
        Print(list0) ' 4 2 6 8
        '
        list0 = list0.Except(list1)
        Print(list0) ' 4 2
        '
        Console.ReadLine()
    End Sub
    Public Shared Sub Print(ByVal collection As IEnumerable)
        For Each element As Object In collection
            Console.Write(element.ToString() & " ")
        Next
        Console.WriteLine()
    End Sub
End Class
Console Application Output
6 8
6 8 2 4
2 4
Vergeet niet dat dit extension methods uit de System.Linq namespace zijn, en bijgevolg een Imports naar deze namespace nodig is.

HashSet(Of T) heeft echter meer set operaties dan voorzien zijn in LINQ, en is zo ontworpen dat deze sneller zullen zijn.

Voor meer details vind je in topic over extension method, query methods en LINQ.

Dit artikel is gepubliceerd op zondag 31 juli 2011 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.