C#HashSet用法、Hashtable用法
HashSetの使い方
.NET 3.5はSystem.Collections.Genericネーミングスペースには、新しい集合クラス:HashSetが含まれています.このコレクションクラスには、重複しないアイテムの無秩序なリストが含まれています.このような集合を「集合(set)」と呼ぶ.セットは予約語なので、クラスには別の名前のHashSetがあります.この名前は分かりやすいです.この集合はハッシュ値に基づいているため、要素を挿入する操作が非常に速く、リストクラスのように集合を並べ替える必要はありません.
HashSetクラスが提供する方法は、集合と交差を作成することができます.
HashSetの作成:
HashSet hs = new HashSet();
HashSet companyTeams = new HashSet() { "Ferrari", "McLaren", "Toyota", "BMW", "Renault", "Honda"};
HashSetセットの値を変更する方法:
Add():ある要素が集合にない場合、Add()メソッドはその要素を集合に追加します.戻り値Booleanで、要素が追加されたかどうかの情報を返します.
eg:
if (!companyTeams.Add("McLaren")) Console.WriteLine("McLaren was already in this set");
Clear():メソッドClear()コレクション内のすべての要素を削除する
eg: companyTeams.Clear();
Remove():Remove()メソッド指定した要素を削除
eg: companyTeams.Remove("McLaren");
RemoveWhere():RemoveWhere()メソッドには、パラメータとしてPredicate委任が必要です.述語条件を満たすすべての要素を削除
Predicateは、関数またはラムダ式に委任できます.
ラムダ式への委任:eg:
companyTeams.RemoveWhere(company => { if (company.Length > 5) { return true; } else { return false; } });
関数に委任:
eg:
companyTeams.RemoveWhere(CheckLength);
public bool CheckLength(string company) { return company.Length > 5 ? true : false; }
CopyTo():CopyTo()コレクション内の要素を1つの配列にコピー
eg:
string[] strArray = new string[companyTeams.Count]; companyTeams.CopyTo(strArray); foreach (string str in strArray) { Console.WriteLine(str); }
ExceptWith():ExceptWith()メソッドは、1つの集合をパラメータとして、その集合のすべての要素をセットから削除します.
eg:
companyTeams.ExceptWith(privateTeams); foreach (var str in companyTeams) { Console.WriteLine(str); }
UnionWith():UnionWith()メソッドは、パラメータに転送されたセット内のすべての要素をセットに追加します.
eg:
companyTeams.UnionWith(privateTeams); foreach (var str in companyTeams) { Console.WriteLine(str); }
HashSetはセットの情報のみを返し、要素を変更しない方法です.
Contains():転送された要素がセット内にある場合、メソッドContains()はtrueを返します.
eg:
if (companyTeams.Contains("BMW")) { Console.WriteLine("companyTeams contains\"BMW\""); }
IsSubsetOf():パラメータ転送のセットがセットのサブセットである場合、メソッドIsSubsetOf()はtrueを返します.
eg:
if (traditionalTeams.IsSubsetOf(companyTeams)) { Console.WriteLine("traditionalTeams is "+ "subset of companyTeams"); }
IsspersetOf():パラメータ転送のセットがセットのスーパーセットである場合、メソッドIsspersetOf()はtrueを返します.
eg: if (companyTeams.IsSupersetOf(traditionalTeams)) { Console.WriteLine("companyTeams is a superset of "+ "traditionalTeams"); }
Overlaps():パラメータ転送のセットの少なくとも1つの要素がセットの要素と同じである場合、Overlaps()はtrueを返します.
eg:
traditionalTeams.Add("Williams"); if (privateTeams.Overlaps(traditionalTeams)) { Console.WriteLine("At least one team is "+ "the same with the traditional "+ "and privateteams"); }
SetEquals():パラメータ転送のセットとセットに同じ要素が含まれている場合、メソッドSetEquals()はtrueを返します.
http://www.cnblogs.com/xiaopin/archive/2011/01/08/1930540.html
Hashtableの使い方:
一、ハッシュテーブル(Hashtable)は簡単に述べる.NET Frameworkでは、HashtableはSystem.Collectionsネーミングスペースには、key/valueのようなキー値ペアを処理し、表現するためのコンテナがあります.keyは通常、大文字と小文字を区別すると同時に、迅速に検索するために使用できます.valueはkeyに対応する値を格納するために使用されます.Hashtableにおけるkey/valueキーの値対はいずれもobjectタイプであるため、Hashtableは任意のタイプのkey/valueキーの値対をサポートすることができる.二、ハッシュ表の簡単な操作ハッシュ表にkey/valueキー値対:HashtableObjectを追加する.Add(key,value); ハッシュ・テーブルでキー/valueキーのペアを除去する:HashtableObject.Remove(key); ハッシュ表からすべての要素を除去する:HashtableObject.Clear(); ハッシュテーブルに特定キー:HashtableObjectが含まれているかどうかを判断する.Contains(key);
三、ハッシュ表を遍歴する
ハッシュ・テーブルを巡回するには、次のようなDictionaryEntry Objectが必要です.
四、ハッシュ表を並べ替える
ハッシュ・テーブルのソートここでの定義はkey/valueキー値ペアのkeyを一定のルールで並べ替えることですが、実際にはこの定義は実現できません.Hashtableで直接keyを並べ替えることはできません.Hashtableが何らかのルールの出力を提供する必要がある場合は、融通のきく方法を採用することができます.
http://www.cnblogs.com/feisky/archive/2009/10/29/1591956.html
.NET 3.5はSystem.Collections.Genericネーミングスペースには、新しい集合クラス:HashSetが含まれています.このコレクションクラスには、重複しないアイテムの無秩序なリストが含まれています.このような集合を「集合(set)」と呼ぶ.セットは予約語なので、クラスには別の名前のHashSetがあります.この名前は分かりやすいです.この集合はハッシュ値に基づいているため、要素を挿入する操作が非常に速く、リストクラスのように集合を並べ替える必要はありません.
HashSetクラスが提供する方法は、集合と交差を作成することができます.
HashSetの作成:
HashSet hs = new HashSet();
HashSet companyTeams = new HashSet() { "Ferrari", "McLaren", "Toyota", "BMW", "Renault", "Honda"};
HashSetセットの値を変更する方法:
Add():ある要素が集合にない場合、Add()メソッドはその要素を集合に追加します.戻り値Booleanで、要素が追加されたかどうかの情報を返します.
eg:
if (!companyTeams.Add("McLaren")) Console.WriteLine("McLaren was already in this set");
Clear():メソッドClear()コレクション内のすべての要素を削除する
eg: companyTeams.Clear();
Remove():Remove()メソッド指定した要素を削除
eg: companyTeams.Remove("McLaren");
RemoveWhere():RemoveWhere()メソッドには、パラメータとしてPredicate委任が必要です.述語条件を満たすすべての要素を削除
Predicateは、関数またはラムダ式に委任できます.
ラムダ式への委任:eg:
companyTeams.RemoveWhere(company => { if (company.Length > 5) { return true; } else { return false; } });
関数に委任:
eg:
companyTeams.RemoveWhere(CheckLength);
public bool CheckLength(string company) { return company.Length > 5 ? true : false; }
CopyTo():CopyTo()コレクション内の要素を1つの配列にコピー
eg:
string[] strArray = new string[companyTeams.Count]; companyTeams.CopyTo(strArray); foreach (string str in strArray) { Console.WriteLine(str); }
ExceptWith():ExceptWith()メソッドは、1つの集合をパラメータとして、その集合のすべての要素をセットから削除します.
eg:
companyTeams.ExceptWith(privateTeams); foreach (var str in companyTeams) { Console.WriteLine(str); }
UnionWith():UnionWith()メソッドは、パラメータに転送されたセット内のすべての要素をセットに追加します.
eg:
companyTeams.UnionWith(privateTeams); foreach (var str in companyTeams) { Console.WriteLine(str); }
HashSetはセットの情報のみを返し、要素を変更しない方法です.
Contains():転送された要素がセット内にある場合、メソッドContains()はtrueを返します.
eg:
if (companyTeams.Contains("BMW")) { Console.WriteLine("companyTeams contains\"BMW\""); }
IsSubsetOf():パラメータ転送のセットがセットのサブセットである場合、メソッドIsSubsetOf()はtrueを返します.
eg:
if (traditionalTeams.IsSubsetOf(companyTeams)) { Console.WriteLine("traditionalTeams is "+ "subset of companyTeams"); }
IsspersetOf():パラメータ転送のセットがセットのスーパーセットである場合、メソッドIsspersetOf()はtrueを返します.
eg: if (companyTeams.IsSupersetOf(traditionalTeams)) { Console.WriteLine("companyTeams is a superset of "+ "traditionalTeams"); }
Overlaps():パラメータ転送のセットの少なくとも1つの要素がセットの要素と同じである場合、Overlaps()はtrueを返します.
eg:
traditionalTeams.Add("Williams"); if (privateTeams.Overlaps(traditionalTeams)) { Console.WriteLine("At least one team is "+ "the same with the traditional "+ "and privateteams"); }
SetEquals():パラメータ転送のセットとセットに同じ要素が含まれている場合、メソッドSetEquals()はtrueを返します.
http://www.cnblogs.com/xiaopin/archive/2011/01/08/1930540.html
Hashtableの使い方:
一、ハッシュテーブル(Hashtable)は簡単に述べる.NET Frameworkでは、HashtableはSystem.Collectionsネーミングスペースには、key/valueのようなキー値ペアを処理し、表現するためのコンテナがあります.keyは通常、大文字と小文字を区別すると同時に、迅速に検索するために使用できます.valueはkeyに対応する値を格納するために使用されます.Hashtableにおけるkey/valueキーの値対はいずれもobjectタイプであるため、Hashtableは任意のタイプのkey/valueキーの値対をサポートすることができる.二、ハッシュ表の簡単な操作ハッシュ表にkey/valueキー値対:HashtableObjectを追加する.Add(key,value); ハッシュ・テーブルでキー/valueキーのペアを除去する:HashtableObject.Remove(key); ハッシュ表からすべての要素を除去する:HashtableObject.Clear(); ハッシュテーブルに特定キー:HashtableObjectが含まれているかどうかを判断する.Contains(key);
Hashtable ht = new Hashtable(); // Hashtable
ht.Add("E", "e");// key/value
ht.Add("A", "a");
ht.Add("C", "c");
ht.Add("B", "b");
string s = (string)ht["A"];
if (ht.Contains("E")) // , true false
Console.WriteLine("the E key:exist");
ht.Remove("C");// key/value
Console.WriteLine(ht["A"]);// a
ht.Clear();//
Console.WriteLine(ht["A"]); //
三、ハッシュ表を遍歴する
ハッシュ・テーブルを巡回するには、次のようなDictionaryEntry Objectが必要です.
foreach (DictionaryEntry de in ht) //ht Hashtable
{
Console.WriteLine(de.Key);//de.Key key/value key
Console.WriteLine(de.Value);//de.Key key/value value
}
四、ハッシュ表を並べ替える
ハッシュ・テーブルのソートここでの定義はkey/valueキー値ペアのkeyを一定のルールで並べ替えることですが、実際にはこの定義は実現できません.Hashtableで直接keyを並べ替えることはできません.Hashtableが何らかのルールの出力を提供する必要がある場合は、融通のきく方法を採用することができます.
ArrayList akeys = new ArrayList(ht.Keys); // System.Collections
akeys.Sort(); //
foreach (string skey in akeys)
{
Console.Write(skey + ":");
Console.WriteLine(ht[skey]);//
}
http://www.cnblogs.com/feisky/archive/2009/10/29/1591956.html