c#のsortedlistの使用方法

6333 ワード

キー/値のペアのセットを表します.キーと値のキーがソートされ、キーとインデックスに従ってアクセスできます.
SortedListは1列の健/値ペアをソートするのに最適であり、ソート時にはキーをソートし、SortedListはHashtableとArrayの混合である.Item Indexプロパティを使用して要素のキーに従って要素にアクセスする場合、その動作はHashtableに似ています.GetByIndexまたはSetByIndexを使用して要素のインデックスに従って要素にアクセスする場合、その動作はArrayに似ています.
SortedListは、配列をリストに格納するために内部で2つの配列を維持する.すなわち、1つの配列はキーに使用され、もう1つの配列は関連する値に使用される.各要素は、DictionaryEntryオブジェクトとしてアクセスできるキー/値ペアです.キーは空の参照ではありません(Visual BasicではNothing)が、値は可能です.SortedListの容量はリストが持つことができる要素の数です.SortedListに要素を追加するにつれて、容量は再割り当てによって自動的に増加します.TrimToSizeを呼び出すか、Capacityプロパティを明示的に設定することで容量を削減できます.SortedListの要素は、特定のIComparer実装(SortedListの作成時に指定)またはキー自体が提供するIComparable実装に従って、キーに従ってソートされます.いずれの場合も、SortedListでは重複キーは許可されません.
インデックス順序はソート順に基づいています.エレメントを追加すると、エレメントはSortedListに正しいソート順に挿入され、インデックスが調整されます.要素を除いて移動すると、インデックスも調整されます.したがって、SortedListで要素を追加または削除すると、特定のキー/値ペアのインデックスが変更される可能性があります.
ソートを行うため、Hashtableでの操作よりもSortedListでの操作が遅くなります.ただし、SortedListでは、関連キーやインデックスによる値へのアクセスが可能になり、柔軟性が向上します.
一.削除の追加
1.public virtual void Add(object key,object value);
このセットのインデックスはゼロから始まります.
指定したキーと値を持つ要素をSortedListに追加します.
SortedListに存在しないキーの値を設定することで、新しい要素を追加することもできます.例:myCollection["myNonexistentKey"=myValue.ただし、指定したキーが既にSortedListに存在する場合は、Item属性を設定すると古い値が上書きされます.対照的に、Addメソッドは既存の要素を変更しません.
 
  
SortedList sList = new SortedList();
sList.Add(1,"d");
sList.Add(2,"c");
sList.Add(3,"b");
sList.Add(4,"a");
// d c b a, ,

DropDownList3.DataSource = sList;
DropDownList3.DataTextField = "Key";
DropDownList3.DataValueField = "Value";
DropDownList3.DataBind();


2.public virtual void Remove(object key);
SortedListから指定キーを持つ要素を除去SortedListに指定キーを持つ要素が含まれていない場合、SortedListは変更されません.異常を起こさない
 
  
SortedList sList = new SortedList();
sList.Add(1,"d");
sList.Add(2,"c");
sList.Add(3,"b");
sList.Add(4,"a");
//sList.Remove("b");   , key , Value
sList.Remove(3);   // [3,"b"]
DropDownList3.DataSource = sList;
DropDownList3.DataTextField = "Key";
DropDownList3.DataValueField = "Value";
DropDownList3.DataBind();

3.public virtual void RemoveAt(int index);
SortedListの指定したインデックスの要素を削除します.
 
  
SortedList sList = new SortedList();
sList.Add(1,"d");
sList.Add(2,"c");
sList.Add(3,"b");
sList.Add(4,"a");
sList.RemoveAt(3); // [4,"a"], , ,
// sList.Remove(3) ;   sList.Remove(3) [3,"b"]

DropDownList3.DataSource = sList;
DropDownList3.DataTextField = "Key";
DropDownList3.DataValueField = "Value";
DropDownList3.DataBind();


4.public virtual void Clear();
SortedListからすべての要素Countを削除してゼロに設定します.Capacityは変わらない.SortedListの容量をリセットするには、TrimToSizeを呼び出すか、Capacityプロパティを直接設定します.空のSortedListを切り取ると、SortedListの容量はゼロではなくデフォルトの容量に設定されます.
二.インデックス関連アクション
1.public virtual void SetByIndex(int index,object value);
SortedListで指定したインデックスの値を置き換えます.
 
  
SortedList sList = new SortedList();
sList.Add(1,"d");
sList.Add(2,"c");
sList.Add(3,"b");
sList.Add(4,"a");
sList.SetByIndex(1,"dddddd");   //1 , Count<2, ,
// sList[2] = "dddddd"; ,
// sList[2] = "dddddd"
// ,
DropDownList3.DataSource = sList;
DropDownList3.DataTextField = "Key";
DropDownList3.DataValueField = "Value";
DropDownList3.DataBind();

2.public virtual object GetByIndex(int index);
SortedListの指定したインデックスの値を取得します.indexはCountより小さくなければなりません.そうしないとエラーが発生します.
 
  
SortedList sList = new SortedList();
sList.Add(1,"d");
sList.Add(2,"c");
sList.Add(3,"b");
sList.Add(4,"a");
//sList.Clear();
int nIndex = 2;
if (nIndex{
    Label3.Text = sList.GetByIndex(nIndex).ToString();
}
else
{
   Label3.Text = "nIndex>=Count";
}

3.public virtual int IndexOfKey(object key);
SortedListで指定したキーのスレーブインデックスを返します.これはHashtableにはありません.Hashtableには秩序がないという概念があり、その順序は内部的です.
4.public virtual int IndexOfValue(object value);
指定した値がSortedListで最初に一致するインデックスを返します.これはHashtableにはありません.Hashtableには秩序がないという概念があり、その順序は内部的です.
 
  
SortedList sList = new SortedList();
sList.Add(1,"d");
sList.Add(2,"c");
sList.Add(3,"b");
sList.Add(4,"a");
sList.Add(5,"d");
int nIndex = 0;
nIndex = sList.IndexOfKey(1);   // 0
nIndex = sList.IndexOfValue("d"); // , , 0

三.その他
1.public virtual object GetKey(int index);
SortedListの指定されたインデックスにあるキーを取得するのもHashtableではあり得ません
2.public virtual IList GetKeyList();
SortedListのキーの取得
 
  
SortedList sList = new SortedList();
sList.Add(1,"d");
sList.Add(2,"c");
sList.Add(3,"b");
sList.Add(4,"a");
sList.Add(5,"d");
Label3.Text = "";
IList iList = sList.GetKeyList();
for (int i=0; i{
Label3.Text += iList[i].ToString();
Label3.Text += "   ";
}

注意:IListインタフェースは、インデックスに従って個別にアクセスできるオブジェクトのセットを表します.Itemプロパティは、C#でインデックスです.
3.public virtual IList GetValueList();
SortedListの値の取得
4.public virtual bool Contains(object key);
SortedListに特定のキーが含まれているかどうかを確認します
5.public virtual bool ContainsKey(object key);
SortedListに特定のキーが含まれているかどうかを確認し、Contains(objectkey);まったく同じ
6.public virtual bool ContainsValue(object value);
SortedListに特定の値が含まれているかどうかを確認します
上記の3つの関数はHashtableと全く同じです