C#HashSet用法、Hashtable用法

4924 ワード

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);
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