|
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 OnOption Explicit OffImports 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) hashSet1.UnionWith(list2) Print(hashSet1) hashSet1.ExceptWith(list1) Print(hashSet1) Console.WriteLine(hashSet1.IsSubsetOf(list3)) Console.WriteLine(hashSet1.IsSupersetOf(list4)) 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 SubEnd ClassDownload Visual Basic 2010 Broncode Download Visual C# Sourcecode
Console Application Output 6 8
4 2 6 8
4 2
True
True boven
23.14.2. LINQ Set OperationsEen 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) list0 = list0.Union(list2) Print(list0) list0 = list0.Except(list1) Print(list0) 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 SubEnd ClassDownload Visual Basic 2010 Broncode Download Visual C# Sourcecode
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.
|