HashSetクラス・SortedSetクラスには包含関係の検証を行うメソッドとして次のメソッドが用意されています。 いずれも引数としてIEnumerable<T>を取り、戻り値は真偽値(boolean)です。 なお、要素の並びが異なっていても包含関係には影響しません。 これらのメソッドでは順序にかかわらずどのような要素が含まれているかどうかのみが検証されます。
メソッド | 動作 |
---|---|
HashSet.SetEquals
SortedSet.SetEquals |
現在の集合と引数で指定されたIEnumerable<T>が等しいかどうか調べる (現在の集合と引数の集合がすべて同じ要素で構成されている場合はtrue) |
HashSet.Overlaps
SortedSet.Overlaps |
現在の集合と引数で指定されたIEnumerable<T>が共通する要素を持つかどうか調べる (現在の集合と引数の集合が一つでも同じ要素を持つ場合はtrue) |
HashSet.IsSubsetOf
SortedSet.IsSubsetOf |
現在の集合が引数で指定されたIEnumerable<T>の部分集合かどうか調べる (現在の集合が引数の集合に含まれる場合はtrue) |
HashSet.IsProperSubsetOf
SortedSet.IsProperSubsetOf |
現在の集合が引数で指定されたIEnumerable<T>の真部分集合かどうか調べる (現在の集合が引数の集合に含まれ、かつ両者が等しくない場合はtrue) |
HashSet.IsSupersetOf
SortedSet.IsSupersetOf |
現在の集合が引数で指定されたIEnumerable<T>の上位集合かどうか調べる (現在の集合が引数の集合を含む場合はtrue) |
HashSet.IsProperSupersetOf
SortedSet.IsProperSupersetOf |
現在の集合が引数で指定されたIEnumerable<T>の真上位集合かどうか調べる (現在の集合が引数の集合を含み、かつ両者が等しくない場合はtrue) |
以下は、上記のメソッドを使った例です。 SortedSetでは並べ替えが行われる以外は、結果は同じです。
IsSubsetOf・IsProperSubsetOfメソッドを使ってHashSetが別の集合の部分集合か・真部分集合かどうか調べる
Imports System
Imports System.Collections.Generic
Class Sample
Shared Sub Main()
Dim s As New HashSet(Of Integer)() From {3, 4, 1, 5, 2}
Console.WriteLine("Set: {{{0}}}", String.Join(", ", s))
Console.WriteLine()
' HashSetが引数の集合の部分集合かどうか調べる (IsSubsetOf)
Console.WriteLine(
"IsSubsetOf {{0, 1, 2, 3, 4, 5, 6}}: {0}",
s.IsSubsetOf(New Integer() {0, 1, 2, 3, 4, 5, 6})
)
' HashSetが引数の集合の真部分集合かどうか調べる (IsProperSubsetOf)
Console.WriteLine(
"IsProperSubsetOf {{0, 1, 2, 3, 4, 5, 6}}: {0}",
s.IsProperSubsetOf(New Integer() {0, 1, 2, 3, 4, 5, 6})
)
Console.WriteLine(
"IsSubsetOf {{1, 2, 3, 4, 5}}: {0}",
s.IsSubsetOf(New Integer() {1, 2, 3, 4, 5})
)
Console.WriteLine(
"IsProperSubsetOf {{1, 2, 3, 4, 5}}: {0}",
s.IsProperSubsetOf(New Integer() {1, 2, 3, 4, 5})
)
End Sub
End Class
実行結果
Set: {3, 4, 1, 5, 2} IsSubsetOf {0, 1, 2, 3, 4, 5, 6}: True IsProperSubsetOf {0, 1, 2, 3, 4, 5, 6}: True IsSubsetOf {1, 2, 3, 4, 5}: True IsProperSubsetOf {1, 2, 3, 4, 5}: False