SortedSet<T> クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
並べ替えられた順序で維持されるオブジェクトのコレクションを表します。
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
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::IReadOnlySet<T>, System::Collections::Generic::ISet<T>, System::Collections::ICollection, System::Runtime::Serialization::IDeserializationCallback, System::Runtime::Serialization::ISerializable
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
generic <typename T>
public ref class SortedSet : System::Collections::Generic::ICollection<T>, System::Collections::Generic::IEnumerable<T>, System::Collections::Generic::ISet<T>, System::Collections::ICollection, System::Runtime::Serialization::IDeserializationCallback, System::Runtime::Serialization::ISerializable
generic <typename T>
public ref class SortedSet : System::Collections::Generic::ICollection<T>, System::Collections::Generic::IEnumerable<T>, System::Collections::Generic::ISet<T>, System::Collections::ICollection
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
public class SortedSet<T> : System.Collections.Generic.ICollection<T>, System.Collections.Generic.IEnumerable<T>, System.Collections.Generic.IReadOnlyCollection<T>, System.Collections.Generic.IReadOnlySet<T>, System.Collections.Generic.ISet<T>, System.Collections.ICollection, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
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
[System.Serializable]
public class SortedSet<T> : System.Collections.Generic.ICollection<T>, System.Collections.Generic.IEnumerable<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
public class SortedSet<T> : System.Collections.Generic.ICollection<T>, System.Collections.Generic.IEnumerable<T>, System.Collections.Generic.ISet<T>, System.Collections.ICollection
type SortedSet<'T> = class
interface ICollection<'T>
interface seq<'T>
interface IEnumerable
interface IReadOnlyCollection<'T>
interface ISet<'T>
interface ICollection
type SortedSet<'T> = class
interface ICollection<'T>
interface seq<'T>
interface IEnumerable
interface IReadOnlyCollection<'T>
interface ISet<'T>
interface IReadOnlySet<'T>
interface ICollection
interface IDeserializationCallback
interface ISerializable
type SortedSet<'T> = class
interface ICollection<'T>
interface seq<'T>
interface IEnumerable
interface IReadOnlyCollection<'T>
interface ISet<'T>
interface ICollection
interface IDeserializationCallback
interface ISerializable
[<System.Serializable>]
type SortedSet<'T> = class
interface ISet<'T>
interface ICollection<'T>
interface seq<'T>
interface ICollection
interface IEnumerable
interface ISerializable
interface IDeserializationCallback
[<System.Serializable>]
type SortedSet<'T> = class
interface ISet<'T>
interface ICollection<'T>
interface seq<'T>
interface IEnumerable
interface ICollection
interface ISerializable
interface IDeserializationCallback
interface IReadOnlyCollection<'T>
type SortedSet<'T> = class
interface ISet<'T>
interface ICollection<'T>
interface seq<'T>
interface ICollection
interface IEnumerable
Public Class SortedSet(Of T)
Implements ICollection, ICollection(Of T), IEnumerable(Of T), IReadOnlyCollection(Of T), ISet(Of T)
Public Class SortedSet(Of T)
Implements ICollection, ICollection(Of T), IDeserializationCallback, IEnumerable(Of T), IReadOnlyCollection(Of T), IReadOnlySet(Of T), ISerializable, ISet(Of T)
Public Class SortedSet(Of T)
Implements ICollection, ICollection(Of T), IDeserializationCallback, IEnumerable(Of T), IReadOnlyCollection(Of T), ISerializable, ISet(Of T)
Public Class SortedSet(Of T)
Implements ICollection, ICollection(Of T), IDeserializationCallback, IEnumerable(Of T), ISerializable, ISet(Of T)
Public Class SortedSet(Of T)
Implements ICollection, ICollection(Of T), IEnumerable(Of T), ISet(Of T)
型パラメーター
- T
セット内の要素の型。
- 継承
-
SortedSet<T>
- 属性
- 実装
例
次の例では、IComparer<T> をパラメーターとして受け取るコンストラクターを使用して作成される SortedSet<T> クラスを示します。 この比較子 (ByFileExtension
) は、ファイル名の一覧を拡張子で並べ替えるために使用されます。
この例では、並べ替えられたメディア ファイル名のセットを作成し、不要な要素を削除し、要素の範囲を表示し、セットを別の並べ替えられたセットと比較する方法を示します。
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
注釈
SortedSet<T> オブジェクトは、要素の挿入と削除時にパフォーマンスに影響を与えずに並べ替えられた順序を維持します。 重複する要素は使用できません。 既存の項目の並べ替え値の変更はサポートされておらず、予期しない動作につながる可能性があります。
SortedSet<T>に代わるスレッド セーフな方法については、ImmutableSortedSet<T> を参照してください。
コンストラクター
SortedSet<T>() |
SortedSet<T> クラスの新しいインスタンスを初期化します。 |
SortedSet<T>(IComparer<T>) |
指定した比較子を使用する SortedSet<T> クラスの新しいインスタンスを初期化します。 |
SortedSet<T>(IEnumerable<T>) |
指定した列挙可能なコレクションからコピーされた要素を含む SortedSet<T> クラスの新しいインスタンスを初期化します。 |
SortedSet<T>(IEnumerable<T>, IComparer<T>) |
指定した列挙可能なコレクションからコピーされた要素を含み、指定した比較子を使用する SortedSet<T> クラスの新しいインスタンスを初期化します。 |
SortedSet<T>(SerializationInfo, StreamingContext) |
古い.
シリアル化されたデータを含む SortedSet<T> クラスの新しいインスタンスを初期化します。 |
プロパティ
Comparer |
SortedSet<T>の値の順序付けに使用する IComparer<T> オブジェクトを取得します。 |
Count |
SortedSet<T>内の要素の数を取得します。 |
Max |
比較子によって定義されている SortedSet<T>の最大値を取得します。 |
Min |
比較子によって定義されている SortedSet<T>の最小値を取得します。 |
メソッド
Add(T) |
セットに要素を追加し、正常に追加されたかどうかを示す値を返します。 |
Clear() |
セットからすべての要素を削除します。 |
Contains(T) |
セットに特定の要素が含まれているかどうかを判断します。 |
CopyTo(T[]) |
完全な SortedSet<T> を、ターゲット配列の先頭から互換性のある 1 次元配列にコピーします。 |
CopyTo(T[], Int32) |
指定した配列インデックスから始めて、完全な SortedSet<T> を互換性のある 1 次元配列にコピーします。 |
CopyTo(T[], Int32, Int32) |
指定した数の要素を SortedSet<T> から互換性のある 1 次元配列にコピーします。これは、指定した配列インデックスから始まります。 |
CreateSetComparer() |
個々のセットを含むコレクションを作成するために使用できる IEqualityComparer オブジェクトを返します。 |
CreateSetComparer(IEqualityComparer<T>) |
個々のセットを含むコレクションの作成に使用できる、指定した比較子に従って、IEqualityComparer オブジェクトを返します。 |
Equals(Object) |
指定したオブジェクトが現在のオブジェクトと等しいかどうかを判断します。 (継承元 Object) |
ExceptWith(IEnumerable<T>) |
現在の SortedSet<T> オブジェクトから、指定したコレクション内のすべての要素を削除します。 |
GetEnumerator() |
SortedSet<T>を反復処理する列挙子を返します。 |
GetHashCode() |
既定のハッシュ関数として機能します。 (継承元 Object) |
GetObjectData(SerializationInfo, StreamingContext) |
ISerializable インターフェイスを実装し、SortedSet<T> オブジェクトをシリアル化するために必要なデータを返します。 |
GetType() |
現在のインスタンスの Type を取得します。 (継承元 Object) |
GetViewBetween(T, T) |
SortedSet<T>内のサブセットのビューを返します。 |
IntersectWith(IEnumerable<T>) |
現在の SortedSet<T> オブジェクトを、指定したコレクション内の要素のみを含むように変更します。 |
IsProperSubsetOf(IEnumerable<T>) |
SortedSet<T> オブジェクトが、指定したコレクションの適切なサブセットであるかどうかを判断します。 |
IsProperSupersetOf(IEnumerable<T>) |
SortedSet<T> オブジェクトが、指定したコレクションの適切なスーパーセットであるかどうかを判断します。 |
IsSubsetOf(IEnumerable<T>) |
SortedSet<T> オブジェクトが指定したコレクションのサブセットであるかどうかを判断します。 |
IsSupersetOf(IEnumerable<T>) |
SortedSet<T> オブジェクトが、指定したコレクションのスーパーセットであるかどうかを判断します。 |
MemberwiseClone() |
現在の Objectの簡易コピーを作成します。 (継承元 Object) |
OnDeserialization(Object) |
ISerializable インターフェイスを実装し、逆シリアル化が完了したときに逆シリアル化イベントを発生させます。 |
Overlaps(IEnumerable<T>) |
現在の SortedSet<T> オブジェクトと指定したコレクションが共通の要素を共有するかどうかを決定します。 |
Remove(T) |
SortedSet<T>から指定した項目を削除します。 |
RemoveWhere(Predicate<T>) |
指定した述語で定義されている条件に一致するすべての要素を SortedSet<T>から削除します。 |
Reverse() |
SortedSet<T> を逆の順序で反復処理する IEnumerable<T> を返します。 |
SetEquals(IEnumerable<T>) |
現在の SortedSet<T> オブジェクトと指定したコレクションに同じ要素が含まれているかどうかを判断します。 |
SymmetricExceptWith(IEnumerable<T>) |
現在の SortedSet<T> オブジェクトを変更して、現在のオブジェクトまたは指定したコレクションに存在する要素のみを含めますが、両方は含めないようにします。 |
ToString() |
現在のオブジェクトを表す文字列を返します。 (継承元 Object) |
TryGetValue(T, T) |
セットで特定の値を検索し、検出された等しい値 (存在する場合) を返します。 |
UnionWith(IEnumerable<T>) |
現在のオブジェクトまたは指定したコレクションに存在するすべての要素が含まれるように、現在の SortedSet<T> オブジェクトを変更します。 |
明示的なインターフェイスの実装
ICollection.CopyTo(Array, Int32) |
指定した配列インデックスから始めて、完全な SortedSet<T> を互換性のある 1 次元配列にコピーします。 |
ICollection.IsSynchronized |
ICollection へのアクセスが同期される (スレッド セーフ) かどうかを示す値を取得します。 |
ICollection.SyncRoot |
ICollectionへのアクセスを同期するために使用できるオブジェクトを取得します。 |
ICollection<T>.Add(T) |
ICollection<T> オブジェクトに項目を追加します。 |
ICollection<T>.IsReadOnly |
ICollection が読み取り専用かどうかを示す値を取得します。 |
IDeserializationCallback.OnDeserialization(Object) |
IDeserializationCallback インターフェイスを実装し、逆シリアル化が完了したときに逆シリアル化イベントを発生させます。 |
IEnumerable.GetEnumerator() |
コレクションを反復処理する列挙子を返します。 |
IEnumerable<T>.GetEnumerator() |
コレクションを反復処理する列挙子を返します。 |
ISerializable.GetObjectData(SerializationInfo, StreamingContext) |
ISerializable インターフェイスを実装し、SortedSet<T> インスタンスをシリアル化するために必要なデータを返します。 |
拡張メソッド
適用対象
こちらもご覧ください
.NET