SortedSet<T> クラス
定義
一定の並べ替え順序で管理されたオブジェクトのコレクションを表します。Represents a collection of objects that is maintained in sorted order.
generic <typename T>
public ref class SortedSet : System::Collections::Generic::ICollection<T>, System::Collections::Generic::IEnumerable<T>, System::Collections::Generic::IReadOnlyCollection<T>, System::Collections::Generic::ISet<T>, System::Collections::ICollection, System::Runtime::Serialization::IDeserializationCallback, System::Runtime::Serialization::ISerializable
[System.Serializable]
public class SortedSet<T> : System.Collections.Generic.ICollection<T>, System.Collections.Generic.IEnumerable<T>, System.Collections.Generic.IReadOnlyCollection<T>, System.Collections.Generic.ISet<T>, System.Collections.ICollection, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
type SortedSet<'T> = class
interface ISet<'T>
interface ICollection<'T>
interface ICollection
interface ISerializable
interface IDeserializationCallback
interface IReadOnlyCollection<'T>
interface seq<'T>
interface IEnumerable
Public Class SortedSet(Of T)
Implements ICollection, ICollection(Of T), IDeserializationCallback, IEnumerable(Of T), IReadOnlyCollection(Of T), ISerializable, ISet(Of T)
型パラメーター
- T
セット内の要素の型。The type of elements in the set.
- 継承
-
SortedSet<T>
- 属性
- 実装
例
次の例は、パラメーターとして IComparer<T> を受け取るコンストラクターを使用して作成された @no__t 0 クラスを示しています。The following example demonstrates a SortedSet<T> class that is created with the constructor that takes an IComparer<T> as a parameter. この比較子 (ByFileExtension
) は、拡張子によってファイル名のリストを並べ替えるために使用されます。This comparer (ByFileExtension
) is used to sort a list of file names by their extensions.
この例では、メディアファイル名の並べ替えられたセットを作成する方法、不要な要素を削除する方法、要素の範囲を表示する方法、およびセットを別の並べ替え済みセットと比較する方法を示します。This example demonstrates how to create a sorted set of media file names, remove unwanted elements, view a range of elements, and compare the set with another sorted set.
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
class Program
{
static void Main(string[] args)
{
try
{
// Get a list of the files to use for the sorted set.
IEnumerable<string> files1 =
Directory.EnumerateFiles(@"\\archives\2007\media",
"*", SearchOption.AllDirectories);
// Create a sorted set using the ByFileExtension comparer.
var mediaFiles1 = new SortedSet<string>(new ByFileExtension());
// Note that there is a SortedSet constructor that takes an IEnumerable,
// but to remove the path information they must be added individually.
foreach (string f in files1)
{
mediaFiles1.Add(f.Substring(f.LastIndexOf(@"\") + 1));
}
// Remove elements that have non-media extensions.
// See the 'IsDoc' method.
Console.WriteLine("Remove docs from the set...");
Console.WriteLine($"\tCount before: {mediaFiles1.Count}");
mediaFiles1.RemoveWhere(IsDoc);
Console.WriteLine($"\tCount after: {mediaFiles1.Count}");
Console.WriteLine();
// List all the avi files.
SortedSet<string> aviFiles = mediaFiles1.GetViewBetween("avi", "avj");
Console.WriteLine("AVI files:");
foreach (string avi in aviFiles)
{
Console.WriteLine($"\t{avi}");
}
Console.WriteLine();
// Create another sorted set.
IEnumerable<string> files2 =
Directory.EnumerateFiles(@"\\archives\2008\media",
"*", SearchOption.AllDirectories);
var mediaFiles2 = new SortedSet<string>(new ByFileExtension());
foreach (string f in files2)
{
mediaFiles2.Add(f.Substring(f.LastIndexOf(@"\") + 1));
}
// Remove elements in mediaFiles1 that are also in mediaFiles2.
Console.WriteLine("Remove duplicates (of mediaFiles2) from the set...");
Console.WriteLine($"\tCount before: {mediaFiles1.Count}");
mediaFiles1.ExceptWith(mediaFiles2);
Console.WriteLine($"\tCount after: {mediaFiles1.Count}");
Console.WriteLine();
Console.WriteLine("List of mediaFiles1:");
foreach (string f in mediaFiles1)
{
Console.WriteLine($"\t{f}");
}
// Create a set of the sets.
IEqualityComparer<SortedSet<string>> comparer =
SortedSet<string>.CreateSetComparer();
var allMedia = new HashSet<SortedSet<string>>(comparer);
allMedia.Add(mediaFiles1);
allMedia.Add(mediaFiles2);
}
catch(IOException ioEx)
{
Console.WriteLine(ioEx.Message);
}
catch (UnauthorizedAccessException AuthEx)
{
Console.WriteLine(AuthEx.Message);
}
}
// Defines a predicate delegate to use
// for the SortedSet.RemoveWhere method.
private static bool IsDoc(string s)
{
s = s.ToLower();
return (s.EndsWith(".txt") ||
s.EndsWith(".xls") ||
s.EndsWith(".xlsx") ||
s.EndsWith(".pdf") ||
s.EndsWith(".doc") ||
s.EndsWith(".docx"));
}
}
// Defines a comparer to create a sorted set
// that is sorted by the file extensions.
public class ByFileExtension : IComparer<string>
{
string xExt, yExt;
CaseInsensitiveComparer caseiComp = new CaseInsensitiveComparer();
public int Compare(string x, string y)
{
// Parse the extension from the file name.
xExt = x.Substring(x.LastIndexOf(".") + 1);
yExt = y.Substring(y.LastIndexOf(".") + 1);
// Compare the file extensions.
int vExt = caseiComp.Compare(xExt, yExt);
if (vExt != 0)
{
return vExt;
}
else
{
// The extension is the same,
// so compare the filenames.
return caseiComp.Compare(x, y);
}
}
}
Imports System.Collections
Imports System.Collections.Generic
Imports System.IO
Module Module1
Sub Main()
Try
' Get a list of the files to use for the sorted set.
Dim files1 As IEnumerable = _
Directory.EnumerateFiles("\\archives\2007\media", "*", _
SearchOption.AllDirectories)
' Create a sorted set using the ByFileExtension comparer.
Dim mediaFiles1 As New SortedSet(Of String)(New ByFileExtension)
' Note that there is a SortedSet constructor that takes an IEnumerable,
' but to remove the path information they must be added individually.
For Each f As String In files1
mediaFiles1.Add(f.Substring((f.LastIndexOf("\") + 1)))
Next
' Remove elements that have non-media extensions. See the 'IsDoc' method.
Console.WriteLine("Remove docs from the set...")
Console.WriteLine($"{vbTab}Count before: {mediaFiles1.Count}")
mediaFiles1.RemoveWhere(AddressOf IsDoc)
Console.WriteLine($"{vbTab}Count after: {mediaFiles1.Count}")
Console.WriteLine()
' List all the avi files.
Dim aviFiles As SortedSet(Of String) = mediaFiles1.GetViewBetween("avi", "avj")
Console.WriteLine("AVI files:")
For Each avi As String In aviFiles
Console.WriteLine($"{vbTab}{avi}")
Next
Console.WriteLine()
' Create another sorted set.
Dim files2 As IEnumerable = _
Directory.EnumerateFiles("\\archives\2008\media", "*", _
SearchOption.AllDirectories)
Dim mediaFiles2 As New SortedSet(Of String)(New ByFileExtension)
For Each f As String In files2
mediaFiles2.Add(f.Substring((f.LastIndexOf("\") + 1)))
Next
' Remove elements in mediaFiles1 that are also in mediaFiles2.
Console.WriteLine("Remove duplicates (of mediaFiles2) from the set...")
Console.WriteLine($"{vbTab}Count before: {mediaFiles1.Count}")
mediaFiles1.ExceptWith(mediaFiles2)
Console.WriteLine($"{vbTab}Count after: {mediaFiles1.Count}")
Console.WriteLine()
Console.WriteLine("List of mediaFiles1:")
For Each f As String In mediaFiles1
Console.WriteLine($"{vbTab}{f}")
Next
' Create a set of the sets.
Dim comparer As IEqualityComparer(Of SortedSet(Of String)) = _
SortedSet(Of String).CreateSetComparer()
Dim allMedia As New HashSet(Of SortedSet(Of String))(comparer)
allMedia.Add(mediaFiles1)
allMedia.Add(mediaFiles2)
Catch ioEx As IOException
Console.WriteLine(ioEx.Message)
Catch AuthEx As UnauthorizedAccessException
Console.WriteLine(AuthEx.Message)
End Try
End Sub
' Defines a predicate delegate to use
' for the SortedSet.RemoveWhere method.
Private Function IsDoc(s As String) As Boolean
s = s.ToLower()
Return s.EndsWith(".txt") OrElse
s.EndsWith(".doc") OrElse
s.EndsWith(".xls") OrElse
s.EndsWith(".xlsx") OrElse
s.EndsWith(".pdf") OrElse
s.EndsWith(".doc") OrElse
s.EndsWith(".docx")
End Function
' Defines a comparer to create a sorted set
' that is sorted by the file extensions.
Public Class ByFileExtension
Implements IComparer(Of String)
Dim xExt, yExt As String
Dim caseiComp As CaseInsensitiveComparer = _
New CaseInsensitiveComparer
Public Function Compare(x As String, y As String) _
As Integer Implements IComparer(Of String).Compare
' Parse the extension from the file name.
xExt = x.Substring(x.LastIndexOf(".") + 1)
yExt = y.Substring(y.LastIndexOf(".") + 1)
' Compare the file extensions.
Dim vExt As Integer = caseiComp.Compare(xExt, yExt)
If vExt <> 0 Then
Return vExt
Else
' The extension is the same,
' so compare the filenames.
Return caseiComp.Compare(x, y)
End If
End Function
End Class
End Module
注釈
@No__t 0 のオブジェクトは、要素の挿入や削除に応じて、パフォーマンスに影響を与えずに並べ替えられた順序を保持します。A SortedSet<T> object maintains a sorted order without affecting performance as elements are inserted and deleted. 重複する要素は使用できません。Duplicate elements are not allowed. 既存のアイテムの並べ替え値の変更はサポートされていないため、予期しない動作につながる可能性があります。Changing the sort values of existing items is not supported and may lead to unexpected behavior.
@No__t-0 に代わるスレッドセーフな方法については、「ImmutableSortedSet<T>」を参照してください。For a thread safe alternative to SortedSet<T>, see ImmutableSortedSet<T>
コンストラクター
SortedSet<T>() |
SortedSet<T> クラスの新しいインスタンスを初期化します。Initializes a new instance of the SortedSet<T> class. |
SortedSet<T>(IComparer<T>) |
指定された比較子を使用する SortedSet<T> クラスの新しいインスタンスを初期化します。Initializes a new instance of the SortedSet<T> class that uses a specified comparer. |
SortedSet<T>(IEnumerable<T>) |
指定の列挙可能なコレクションからコピーされた要素を格納する、SortedSet<T> クラスの新しいインスタンスを初期化します。Initializes a new instance of the SortedSet<T> class that contains elements copied from a specified enumerable collection. |
SortedSet<T>(IEnumerable<T>, IComparer<T>) |
指定の列挙可能なコレクションからコピーされた要素を格納し、指定された比較子を使用する、SortedSet<T> クラスの新しいインスタンスを初期化します。Initializes a new instance of the SortedSet<T> class that contains elements copied from a specified enumerable collection and that uses a specified comparer. |
SortedSet<T>(SerializationInfo, StreamingContext) |
シリアル化したデータを格納する、SortedSet<T> クラスの新しいインスタンスを初期化します。Initializes a new instance of the SortedSet<T> class that contains serialized data. |
プロパティ
Comparer |
SortedSet<T> の中の値を順序付けするために使用する IComparer<T> オブジェクトを取得します。Gets the IComparer<T> object that is used to order the values in the SortedSet<T>. |
Count |
SortedSet<T> にある要素の数を取得します。Gets the number of elements in the SortedSet<T>. |
Max |
比較子によって定義された、SortedSet<T> 内の最大値を取得します。Gets the maximum value in the SortedSet<T>, as defined by the comparer. |
Min |
比較子によって定義された、SortedSet<T> 内の最小値を取得します。Gets the minimum value in the SortedSet<T>, as defined by the comparer. |
メソッド
Add(T) |
要素をセットに追加し、正常に追加されたかどうかを示す値を返します。Adds an element to the set and returns a value that indicates if it was successfully added. |
Clear() |
セットからすべての要素を削除します。Removes all elements from the set. |
Contains(T) |
セットに特定の要素が含まれているかどうかを判断します。Determines whether the set contains a specific element. |
CopyTo(T[]) |
SortedSet<T> 全体を互換性のある 1 次元の配列にコピーします。コピー操作は、コピー先の配列の先頭から始まります。Copies the complete SortedSet<T> to a compatible one-dimensional array, starting at the beginning of the target array. |
CopyTo(T[], Int32) |
SortedSet<T> 全体を互換性のある 1 次元配列にコピーします。コピー操作は、配列の指定したインデックスから始まります。Copies the complete SortedSet<T> to a compatible one-dimensional array, starting at the specified array index. |
CopyTo(T[], Int32, Int32) |
指定された数の要素を SortedSet<T> から互換性のある 1 次元配列にコピーします。コピー操作は、指定された配列インデックスから始まります。Copies a specified number of elements from SortedSet<T> to a compatible one-dimensional array, starting at the specified array index. |
CreateSetComparer() |
個々のセットを含んだコレクションを作成する際に使用できる IEqualityComparer オブジェクトを返します。Returns an IEqualityComparer object that can be used to create a collection that contains individual sets. |
CreateSetComparer(IEqualityComparer<T>) |
個々のセットを含んだコレクションを作成する際に使用できる IEqualityComparer オブジェクトを、指定された比較子に従って返します。Returns an IEqualityComparer object, according to a specified comparer, that can be used to create a collection that contains individual sets. |
Equals(Object) |
指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判定します。Determines whether the specified object is equal to the current object. (継承元 Object) |
ExceptWith(IEnumerable<T>) |
現在の SortedSet<T> オブジェクトから、指定されたコレクションに含まれる要素をすべて削除します。Removes all elements that are in a specified collection from the current SortedSet<T> object. |
GetEnumerator() |
SortedSet<T> を反復処理する列挙子を返します。Returns an enumerator that iterates through the SortedSet<T>. |
GetHashCode() |
既定のハッシュ関数として機能します。Serves as the default hash function. (継承元 Object) |
GetObjectData(SerializationInfo, StreamingContext) |
ISerializable インターフェイスを実装し、SortedSet<T> オブジェクトをシリアル化するために必要なデータを返します。Implements the ISerializable interface and returns the data that you must have to serialize a SortedSet<T> object. |
GetType() |
現在のインスタンスの Type を取得します。Gets the Type of the current instance. (継承元 Object) |
GetViewBetween(T, T) |
SortedSet<T> 内のサブセットのビューを返します。Returns a view of a subset in a SortedSet<T>. |
IntersectWith(IEnumerable<T>) |
指定されたコレクションに存在する要素だけが含まれるように現在の SortedSet<T> オブジェクトを変更します。Modifies the current SortedSet<T> object so that it contains only elements that are also in a specified collection. |
IsProperSubsetOf(IEnumerable<T>) |
SortedSet<T> オブジェクトが、指定されたコレクションの真のサブセット (真部分集合) であるかどうかを判断します。Determines whether a SortedSet<T> object is a proper subset of the specified collection. |
IsProperSupersetOf(IEnumerable<T>) |
SortedSet<T> オブジェクトが、指定されたコレクションの真のスーパーセット (真上位集合) であるかどうかを判断します。Determines whether a SortedSet<T> object is a proper superset of the specified collection. |
IsSubsetOf(IEnumerable<T>) |
SortedSet<T> オブジェクトが、指定されたコレクションのサブセットであるかどうかを判断します。Determines whether a SortedSet<T> object is a subset of the specified collection. |
IsSupersetOf(IEnumerable<T>) |
SortedSet<T> オブジェクトが、指定されたコレクションのスーパーセットであるかどうかを判断します。Determines whether a SortedSet<T> object is a superset of the specified collection. |
MemberwiseClone() |
現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object. (継承元 Object) |
OnDeserialization(Object) |
ISerializable インターフェイスを実装し、逆シリアル化が完了したときに逆シリアル化イベントを発生させます。Implements the ISerializable interface, and raises the deserialization event when the deserialization is completed. |
Overlaps(IEnumerable<T>) |
現在の SortedSet<T> オブジェクトと指定されたコレクションとが共通の要素を共有しているかどうかを判断します。Determines whether the current SortedSet<T> object and a specified collection share common elements. |
Remove(T) |
指定した項目を SortedSet<T> から削除します。Removes a specified item from the SortedSet<T>. |
RemoveWhere(Predicate<T>) |
指定の述語によって定義された条件に一致するすべての要素を SortedSet<T> から削除します。Removes all elements that match the conditions defined by the specified predicate from a SortedSet<T>. |
Reverse() |
IEnumerable<T> を逆順で反復処理する SortedSet<T> を返します。Returns an IEnumerable<T> that iterates over the SortedSet<T> in reverse order. |
SetEquals(IEnumerable<T>) |
現在の SortedSet<T> オブジェクトと指定されたコレクションに同じ要素が存在するかどうかを判断します。Determines whether the current SortedSet<T> object and the specified collection contain the same elements. |
SymmetricExceptWith(IEnumerable<T>) |
現在の SortedSet<T> オブジェクトを、そのオブジェクトと指定されたコレクションの (両方に存在するのではなく) どちらか一方に存在する要素だけが格納されるように変更します。Modifies the current SortedSet<T> object so that it contains only elements that are present either in the current object or in the specified collection, but not both. |
ToString() |
現在のオブジェクトを表す string を返します。Returns a string that represents the current object. (継承元 Object) |
TryGetValue(T, T) |
指定された値をセットで検索し、見つかった場合は同じ値を返します。Searches the set for a given value and returns the equal value it finds, if any. |
UnionWith(IEnumerable<T>) |
現在の SortedSet<T> オブジェクトを、現在のオブジェクトまたは指定したコレクションのいずれかに存在するすべての要素が格納されるように変更します。Modifies the current SortedSet<T> object so that it contains all elements that are present in either the current object or the specified collection. |
明示的なインターフェイスの実装
ICollection.CopyTo(Array, Int32) |
SortedSet<T> 全体を互換性のある 1 次元配列にコピーします。コピー操作は、配列の指定したインデックスから始まります。Copies the complete SortedSet<T> to a compatible one-dimensional array, starting at the specified array index. |
ICollection.IsSynchronized |
ICollection へのアクセスが同期されている (スレッド セーフである) かどうかを示す値を取得します。Gets a value that indicates whether access to the ICollection is synchronized (thread safe). |
ICollection.SyncRoot |
ICollection へのアクセスを同期するために使用できるオブジェクトを取得します。Gets an object that can be used to synchronize access to the ICollection. |
ICollection<T>.Add(T) |
ICollection<T> オブジェクトに項目を追加します。Adds an item to an ICollection<T> object. |
ICollection<T>.IsReadOnly |
ICollection が読み取り専用かどうかを示す値を取得します。Gets a value that indicates whether a ICollection is read-only. |
IDeserializationCallback.OnDeserialization(Object) |
IDeserializationCallback インターフェイスを実装し、逆シリアル化が完了したときに逆シリアル化イベントを発生させます。Implements the IDeserializationCallback interface, and raises the deserialization event when the deserialization is completed. |
IEnumerable.GetEnumerator() |
コレクションを反復処理する列挙子を返します。Returns an enumerator that iterates through a collection. |
IEnumerable<T>.GetEnumerator() |
コレクションを反復処理する列挙子を返します。Returns an enumerator that iterates through a collection. |
ISerializable.GetObjectData(SerializationInfo, StreamingContext) |
ISerializable インターフェイスを実装し、SortedSet<T> インスタンスをシリアル化するために必要なデータを返します。Implements the ISerializable interface, and returns the data that you need to serialize the SortedSet<T> instance. |
拡張メソッド
CopyToDataTable<T>(IEnumerable<T>) |
指定した入力 DataTable オブジェクトに応じて (ジェネリック パラメーター |
CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption) |
指定した入力 DataRow オブジェクトに応じて (ジェネリック パラメーター |
CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption, FillErrorEventHandler) |
指定した入力 DataRow オブジェクトに応じて (ジェネリック パラメーター |
Cast<TResult>(IEnumerable) |
IEnumerable の要素を、指定した型にキャストします。Casts the elements of an IEnumerable to the specified type. |
OfType<TResult>(IEnumerable) |
指定された型に基づいて IEnumerable の要素をフィルター処理します。Filters the elements of an IEnumerable based on a specified type. |
AsParallel(IEnumerable) |
クエリの並列化を有効にします。Enables parallelization of a query. |
AsQueryable(IEnumerable) |
IEnumerable を IQueryable に変換します。Converts an IEnumerable to an IQueryable. |
Ancestors<T>(IEnumerable<T>) |
ソース コレクション内のすべてのノードの先祖が格納された、要素のコレクションを返します。Returns a collection of elements that contains the ancestors of every node in the source collection. |
Ancestors<T>(IEnumerable<T>, XName) |
ソース コレクション内のすべてのノードの先祖が格納され、フィルター処理された要素のコレクションを返します。Returns a filtered collection of elements that contains the ancestors of every node in the source collection. 一致する XName を持つ要素のみがコレクションに含められます。Only elements that have a matching XName are included in the collection. |
DescendantNodes<T>(IEnumerable<T>) |
ソース コレクション内のすべてのドキュメントおよび要素の子孫ノードのコレクションを返します。Returns a collection of the descendant nodes of every document and element in the source collection. |
Descendants<T>(IEnumerable<T>) |
ソース コレクション内のすべての要素とドキュメントの子孫要素が格納された要素のコレクションを返します。Returns a collection of elements that contains the descendant elements of every element and document in the source collection. |
Descendants<T>(IEnumerable<T>, XName) |
ソース コレクション内のすべての要素とドキュメントの子孫要素が格納され、フィルター処理された要素のコレクションを返します。Returns a filtered collection of elements that contains the descendant elements of every element and document in the source collection. 一致する XName を持つ要素のみがコレクションに含められます。Only elements that have a matching XName are included in the collection. |
Elements<T>(IEnumerable<T>) |
ソース コレクション内のすべての要素およびドキュメントの子要素のコレクションを返します。Returns a collection of the child elements of every element and document in the source collection. |
Elements<T>(IEnumerable<T>, XName) |
ソース コレクション内のすべての要素およびドキュメントの、フィルター処理された子要素のコレクションを返します。Returns a filtered collection of the child elements of every element and document in the source collection. 一致する XName を持つ要素のみがコレクションに含められます。Only elements that have a matching XName are included in the collection. |
InDocumentOrder<T>(IEnumerable<T>) |
ソース コレクション内のすべてのノードがドキュメント順に並べ替えて格納された、ノードのコレクションを返します。Returns a collection of nodes that contains all nodes in the source collection, sorted in document order. |
Nodes<T>(IEnumerable<T>) |
ソース コレクション内のすべてのドキュメントおよび要素の子ノードのコレクションを返します。Returns a collection of the child nodes of every document and element in the source collection. |
Remove<T>(IEnumerable<T>) |
ソース コレクション内の親ノードからすべてのノードを削除します。Removes every node in the source collection from its parent node. |